ansible批量管理服务 上 (2)

命令检测:
在这里密码,端口都默认一样的

[root@m01 ~]#vim /etc/ansible/hosts nfs01 ansible_host=172.16.1.31 172.16.1.41 ansible_user=root ansible_password=123456 172.16.1.7 ansible_user=root ansible_password=123456 ansible_port=22 # 命令执行 [root@m01 ~]#ansible all -m command -a "hostname" nfs01 | CHANGED | rc=0 >> nfs01 172.16.1.7 | CHANGED | rc=0 >> web01 172.16.1.41 | CHANGED | rc=0 >> backup

如果端口,密码不一样该怎么用

[root@m01 ~]#vim /etc/ansible/hosts nfs01 ansible_host=172.16.1.31 172.16.1.41 ansible_user=root ansible_password=123456 172.16.1.7 ansible_user=root ansible_password=654321 ansible_port=52113 # 命令执行 [root@m01 ~]#ansible all -m command -a "hostname" nfs01 | CHANGED | rc=0 >> nfs01 172.16.1.7 | CHANGED | rc=0 >> web01 172.16.1.41 | CHANGED | rc=0 >> backup

2.3.3 方法三:编写服务主机组信息

编写服务主机组信息

[root@m01 ~]#vi /etc/ansible/hosts [ichn] nfs01 ansible_host=172.16.1.31 172.16.1.41 ansible_user=root ansible_password=123456 [web] 172.16.1.7 ansible_user=root ansible_password=123456 ansible_port=22

命令检测
主机组所有名称可以用 all 代替

[root@m01 ~]#ansible all -m command -a "hostname" nfs01 | CHANGED | rc=0 >> nfs01 172.16.1.7 | CHANGED | rc=0 >> web01 172.16.1.41 | CHANGED | rc=0 >> backup

主机组所有名称之间可以用逗号隔开

[root@m01 ~]#ansible ichn,web -m command -a "hostname" nfs01 | CHANGED | rc=0 >> nfs01 172.16.1.7 | CHANGED | rc=0 >> web01 172.16.1.41 | CHANGED | rc=0 >> backup

2.2.4 方法四:编写服务主机子组信息

编写服务主机子组信息
children:是固定的

[root@m01 ~]#vim /etc/ansible/hosts [nfs:children] nfs_server nfs_client [nfs_server] nfs01 ansible_host=172.16.1.31 [nfs_client] 172.16.1.41 ansible_user=root ansible_password=123456 172.16.1.7 ansible_user=root ansible_password=12345 ansible_port=22

命令检测
所有主机组,子组都可以用 all 来代替

[root@m01 ~]#ansible all -m command -a "hostname" 172.16.1.41 | CHANGED | rc=0 >> backup 172.16.1.7 | CHANGED | rc=0 >> web01 nfs01 | CHANGED | rc=0 >> nfs01

所有主机组,子组都可以用 nfs 来代替

[root@m01 ~]#ansible nfs -m command -a "hostname" nfs01 | CHANGED | rc=0 >> nfs01 172.16.1.7 | CHANGED | rc=0 >> web01 172.16.1.41 | CHANGED | rc=0 >> backup

可以单独启动其中一个子组

[root@m01 ~]#ansible nfs_server -m command -a "hostname" nfs01 | CHANGED | rc=0 >> nfs01

2.2.5 方法五:编写配置主机清单变量信息

配置主机清单变量信息

[root@m01 ~]#vim /etc/ansible/hosts [nfs:vars] pass=123456 port=873 [nfs] 172.16.1.31 172.16.1.41 [nfs_client] 172.16.1.41 [nfs_client:vars] ansible_user=root ansible_password=123456

命令检测
所有主机清单变量都可以用 all 来代替

[root@m01 ~]#ansible all -m command -a "hostname" 172.16.1.31 | CHANGED | rc=0 >> nfs01 172.16.1.41 | CHANGED | rc=0 >> backup

可以用变量的主机组来代替

[root@m01 ~]#ansible nfs -m command -a "hostname" 172.16.1.31 | CHANGED | rc=0 >> nfs01 172.16.1.41 | CHANGED | rc=0 >> backup

2.4 ansible远程连接操作异常说明

(1)查看主机清单配置文件是否正确
(2)利用SSH命令直接连接,连接不上查看有没有公钥  密码正不正确  指定用户正不正确  防火墙是否阻止
(3)远程管理一直报错,只要老的ansible远程会话存在

[root@m01 /]#ps -ef|grep ssh # SSH远程服务进程(实现客户端远程连接) root 1211 1 0 09:49 ? 00:00:00 /usr/sbin/sshd -D # SSH远程连接会话进程(维持连接会话) root 2179 1211 0 15:16 ? 00:00:00 sshd: root@pts/1,pts/2

3 ansible服务模块应用方法

3.1 command模块(默认模块,不加模块会默认使用command)

command – Execute commands on targets:对目标主机执行命令
Synopsis:模块详细说明
(1)模块多个参数要用空格分隔
(2)使用commad模块一些特殊符号信息不能使用,如果非要执行请使用shell模块
像变量$HOME和"<",">","|",";"和"&"将不起作用
Parameters:模块的参数

chdir 在运行命令之前,先切换指定目录(远程主机)
creates   在执行命令前,判断远程主机指定文件是否存在,如果存在,命令不执行    
removes   在执行命令前,判断远程主机指定文件是否存在,如果存在,命令继续执行    
free_form   在使用这个模块是, -a后面必须输入一个合法linux命令    

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxfyf.html