Linux搭建Ansible集群服务


前提: 成功安装基础Ansible服务

实验要求:

主机名称 IP地址 分配角色
mast01 192.168.183.160 master
node01 192.168.183.110 node
node02 192.168.183.120 node

基本配置

创建node机

新创建两台节点服务器,并使用以下命令修改其网络

##绿色字段都是可以修改;ens32可能会不一样,另外的节点机192.168.183.120网址记得修改
nmcli connection modify "ens32" ipv4.method manual ipv4.addresses "192.168.183.110/24" ipv4.gateway "192.168.183.2" ipv4.dns "114.114.114.114" connection.autoconnect yes

##重启网络
nmcli con down ens32
nmcli con up ens32

在这里插入图片描述
在这里插入图片描述

修改主机名

对主服务器和节点服务器分别使用hostnamectl -set hostname 主机名称
在这里插入图片描述

ssh互信

首先在主节点上使用ssh-keygen生成密钥对,然后使用ssh-copy-id IP地址拷贝公钥到需要免密码的主机上
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

修改配置文件

在主节点使用vim /etc/ansible/hosts进入hosts文件添加需要的节点服务器的IP地址如下:
在这里插入图片描述

Ansible常用模块

ping模块

  • 是Ansible最基础的模块,主要用于探测网络中被管理主机是否能够正常使用,用于ping本身服务器,返回值是changed、ping。
  • ping不pong是因为之前没有ssh过,主控端know_hosts中没有产生对方的识别信息

语法:ansible all/IP地址 -m ping
在这里插入图片描述

command模块

  • Ansible默认模块,在远程主机执行命令,主要用于执行Linux基础命令,可以执行远程服务器命令执行、任务执行等操作。
  • 不支持变量、重定向、管道符等,这些操作需要用shell模块执行

command模块使用详解:

参数 说明
chdir 执行命令前,切换到目录
creates 当该文件存在时,不执行该步骤
executable 切换shell来执行命令,需要使用命令的绝对路径
free_from 需要执行的脚本,一般使用Ansible的-a参数代替。
removes 当该文件不存在时,不执行该步骤
warn 如果在ansible.cfg中存在告警,如果设定了false,不会告警该行

语法:ansible all/IP地址 [-m command] -a 'Linux基础命令'
eg:

##在192.168.183.110主机下创建test01目录
ansible 192.168.183.110 -a 'mkdir /test01'

在这里插入图片描述

shell模块

  • 和command相似,但更为强大可以执行command不能执行的变量、重定向、管道符等。
  • 不能执行类似 cat /tmp/stanley.md | awk -F’|’ ‘{print $1,$2}’ &> /tmp/example.txt 等复杂命令。
  • shell中的参数与command是相同的

语法:ansible all/IP地址 -m shell -a 'Linux基础命令'
eg:

##在192.168.183.110主机下的 /test01/file1.txt输入hello world字段
ansible 192.168.183.110 -m shell -a 'echo "hello world > /test01/file1.txt"'

在这里插入图片描述

copy模块

  • 从主控端复制文件到远程主机

copy模块使用详解

参数 说明
src 源文件 指定拷贝文件的本地路径 (如果有/ 则拷贝目录内容,比拷贝目录本身)
dest 指定目标路径
mode 设置权限
backup 备份源文件
content 代替src 指定本机文件内容,生成目标主机文件
group 设定远程主机目录的组名
owner 设定远程主机目录的用户名

语法:ansible all/IP地址 -m copy -a 'src=... dest=... [mode=... backup=... owner=..]'
eg:

##在192.168.183.110主机将/etc/passwd复制到/test01下并修改权限和拥有这
ansible 192.168.183.110 -m copy -a 'src=/etc/passwd dest=/test01/ mode=755 owner=me'

在这里插入图片描述

file模块

设置文件属性,创建文件或目录、删除文件或目录、修改文件权限等。

file模块使用详解:

参数 说明
path 要管理的文件路径 (强制添加)
recurse 递归,文件夹要用递归
mode 设置权限
group 设定远程主机目录的组名
owner 设定远程主机目录的用户名
src 创建硬链接,软链接时,指定源目标,配合’state=link’ ‘state=hard’ 设置软链接,硬链接
state 状态; absent—缺席,删除; touch—创建文件; directory—创建目录 等等

语法:ansible all/IP地址 -m file -a 'path=... [state=... mode=... owner=... ]'
eg:

##在192.168.183.120主机下创建test01目录
ansible 192.168.183.120 -m file -a 'path=/test01 state=directory'

##在192.168.183.120主机下的test01创建file2文件
ansible 192.168.183.120 -m file -a 'path=/test01/file2 state=touch'

##在所有主机下创建test01目录的软链接
ansible all -m file -a 'src=/test01/  dest=/test01/testfile state=link'

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

cron模块

  • 可以帮助我们管理远程主机中的计划任务,功能相当于 crontab 命令。

cron模块常用命令参数详解:

参数 说明
minute 此参数用于设置计划任务中分钟设定位的值,当不使用此参数时,分钟设定位的值默认为”*”。
hour 此参数用于设置计划任务中小时设定位的值,当不使用此参数时,小时设定位的值默认为”*”。
day 此参数用于设置计划任务中日设定位的值,当不使用此参数时,日设定位的值默认为”*”。
month 此参数用于设置计划任务中月设定位的值,当不使用此参数时,月设定位的值默认为”*”。
weekday 此参数用于设置计划任务中周几设定位的值,当不使用此参数时,周几设定位的值默认为”*”。

eg:

##在所有主机上创建计划任务,任务名称为”crontab test”,任务于每天1点5分执行,任务内容为输出test字符。
ansible all -m cron -a " name='crontabtest1' minute=5 hour=1 job='echo hello world' "

##在所有主机上创建计划任务,任务名称为”crontab day test”,任务每3天执行一次,于执行当天的1点1分开始执行,任务内容为输出 test 字符。
ansible all -m cron -a " name='crontabday01 test' minute=1 hour=1 day=*/3 job='echo hello world' "

##查看主机上的计划任务
crontab -u root -l

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

yum模块

  • 主要用于软件的安装、升级、卸载,支持rpm软件包的管理

yum模块使用详解:

参数 说明
conf_file 设置远程yum执行时所依赖的yum配置文件
disable_gpg_check 安装软件包之前是否检查gpg key
name 需要安装的软件名称,支持软件组安装
update_cache 安装软件之前更新缓存
enablerepo 指定repo源名称
skip_broken 跳过异常软件节点
state 软件包状态,包括installed、present—安裝软件;latest—安裝最新的软件;absent、removed—卸载软件

语法:ansible all/IP地址 -m yum -a 'name=... state=...'
eg:

 ansible all -m yum -a 'name=httpd state=present' 
 ansible all -m yum -a 'name=httpd state=absent' 

在这里插入图片描述
在这里插入图片描述

Guess you like

Origin blog.csdn.net/weixin_46329906/article/details/116948480