ansible [主机名/IP] --list-hosts
[root@localhost ~]# ansible web1 --list-hosts
hosts (1):
web1
//不存在清单中
[root@localhost ~]# ansible web111111111 --list-hosts
[WARNING]: Could not match supplied host pattern, ignoring: web111111111
[WARNING]: No hosts matched, nothing to do
hosts (0):
运行以下命令来列出指定组中的所有主机:
ansible [组名称] --list-hosts
[root@localhost ~]# ansible webservers --list-hosts
hosts (1):
192.168.111.142
如果清单中含有名称相同的主机和主机组,ansible 命令将显示警告并以主机作为其目标。主机组则被忽略。
应对这种情况的方法有多种,其中最简单的是确保主机组不使用与清单中主机相同的名称。
5.构建Ansible清单
清单内容:
web1
[webservers]
192.168.111.142
[dbservers]
192.168.111.143
使用以下命令列出默认清单文件中的所有受管主机:
[root@localhost ~]# ansible all --list-hosts
hosts (3):
web1
192.168.111.142
192.168.111.143
使用以下命令列出不属于任何组的受管主机:
[root@localhost ~]# ansible ungrouped --list-hosts
hosts (1):
web1
使用以下命令列出属于某组的受管主机:
[root@localhost ~]# ansible dbservers --list-hosts
hosts (1):
192.168.111.143
6.自定义清单文件
在清单的位置中已经创建一个名为inventory的自定义静态清单文件。
服务器清单规格
主机IP |
用途 |
位置 |
运行环境 |
192.168.111.142 |
web服务器 |
武汉 |
测试 |
192.168.111.143 |
web服务器 |
武汉 |
生产 |
编辑/etc/ansible/inventory文件,将上表中所列出的主机加入受管主机序列。
[root@localhost ~]# vim /etc/ansible/ansible.cfg
inventory = /etc/ansible/inventory //自定义清单存放位置
[root@localhost ~]# vim /etc/ansible/inventory
[test1]
192.168.111.142 ansible_user=root ansible_password=1 //密码写在配置文件中容易泄露最好别写
[produce]
192.168.111.143
执行以下命令列出所有受管主机:
[root@localhost ~]# ansible all -i /etc/ansible/inventory --list-hosts
hosts (2):
192.168.111.142
192.168.111.143
执行以下命令列出webservers组中的所有受管主机:
[root@localhost ~]# ansible test1 -i /etc/ansible/inventory --list-hosts
hosts (1):
192.168.111.142
三、运行临时命令
Ansible运行临时命令的语法如下:
ansible host-pattern -m module [-a 'module arguments'] [-i inventory]
host-pattern参数用于指定在其上运行临时命令的受管主机。它可以是清单中的特定受管主机或主机组。也可以用后面的-i选项指定特定的清单而不使用默认清单。
-m选项将Ansible应在目标主机上运行的module名称作为参数。模块是为了实施任务而执行的小程序。一些模块不需要额外的信息,但其他模块需要使用额外的参数来指定其操作详情。-a选项以带引号字符串形式取这些参数的列表。
一种最简单的临时命令使用ping模块。此模块不执行ICMP ping,而是检查能否在受管主机上运行基于Python的模块。例如,以下临时命令确定清单中的所有受管主机能否运行标准的模块:
[root@localhost ~]# ansible all -m ping
192.168.111.143 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
192.168.111.142 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
1.使用临时命令通过模块来执行任务
模块是临时命令用于完成任务的工具。Ansible提供了数百个能够完成不同任务的模块。通常我们可以查找一个经过测试的专用模块,作为标准安装的一部分来完成所需的任务。
ansible-doc -l命令可以列出系统上安装的所有模块
可以使用ansible-doc来按照名称查看特定模块的帮助文档,再查找关于模块将取什么参数作为选项的信息。
例如以下命令显示ping模块的帮助文档,在帮助文档里面输入q命令表示退出:
ansible-doc ping
更多的模块信息请访问在线Ansible文档,网址:
Index of all Modules — Ansible Documentation
Ansible常用模块
模块类别 |
模块 |
文件模块 |
copy:将本地文件复制到受管主机 file:设置文件的权限和其他属性 lineinfile:确保特定行是否在文件中 synchronize:使用rsync同步内容 |
软件包模块 |
package:使用操作系统本机的自动检测软件包管理器管理软件包 yum:使用yum管理软件包 apt:使用APT管理软件包 dnf:使用dnf管理软件包 gem:管理Ruby gem pip:从PyPI管理Python软件包 |
系统模块 |
firewalld:使用firewalld管理防火墙 reboot:重启计算机 service:管理服务 user:添加、删除和管理用户帐户 |
Net Tools模块 |
get_url:通过HTTP、HTTPS或FTP下载文件 n |