Ansible 的资产分为静态资产和动态资产

一、静态资产

Ansible 默认资产文件路径: /etc/ansible/hosts

注意:pip 安装的可能没有这个文件,需手动创建⼀个即可

1. 自定义资产

[root@hadoop102 ~]# vim /etc/ansible/inventory.ini

  1. 192.168.10.103
  2. 192.168.10.104
  3. 192.168.10.[105:110]
  4. hadoop103
  5. hadoop[104:110]
  6. [hadoop_servers]
  7. 192.168.10.102
  8. 192.168.10.103
  9. 192.168.10.104
  10. [redis_servers]
  11. 192.168.10.102
  12. 192.168.10.105
  13. 192.168.10.106
  14. [allbigdate_servers]
  15. [allbigdate_servers:children]
  16. hadoop_servers
  17. redis_servers

参数说明:
1. Ansible 的资产文件中,可以以IP 地址的形式或者主机名的形式存在
2. Ansible 的资产若连续,可以使用[stat:end] 的形式去表达
3. 可以将服务器按照业务场景定义成组,比如dbdb_servers 和web_servers
4. 组和组之间可存在继承关系,如hadoop_servers 和redis_servers 同时继承allbigdate_servers 组

2. 自定义资产的使用

通过 -i 参数指定自定义资产的文件位置即可
(可以是全路径,也可以是相对路径)

命令:ansible all -i inventory.ini …

3. 验证自定义资产

1)列出所有资产

[root@hadoop102 ~]# ansible all -i /etc/ansible/inventory.ini —list-hosts
image.png

2)列出指定资产

[root@hadoop102 ~]# ansible redis_servers -i /etc/ansible/inventory.ini —list-hosts
image.png
[root@hadoop102 ~]# ansible allbigdate_servers -i /etc/ansible/inventory.ini —list-hosts
image.png

二、资产选择器

Ansible 的资产选择器 PATTERN的作用:
只对资产中的一部分服务器进行操作,而不是资产中所有服务器

1. 基本语法

ansible PATTERN -i inventory -m module -a argument

选择一台或者几台服务器:
[root@hadoop102 ~]# ansible 192.168.10.103 -i /etc/ansible/inventory.ini —list-hosts
image.png

[root@hadoop102 ~]# ansible 192.168.10.104,192.168.10.105 -i /etc/ansible/inventory.ini —list-hosts
image.png

[root@hadoop102 ~]# ansible hadoop104 -i /etc/ansible/inventory.ini —list-hosts
image.png

选择一组服务器:
[root@hadoop102 ~]# ansible hadoop_servers -i /etc/ansible/inventory.ini —list-hosts
image.png

使用 匹配:
[root@hadoop102 ~]# ansible 192.168.10.11
-i /etc/ansible/inventory.ini —list-hosts
image.png

使用逻辑匹配:
取hadoop_servers组与redis_servers组内的所有主机(并集):
[root@hadoop102 ~]# ansible ‘hadoop_servers:redis_servers’ -i /etc/ansible/inventory.ini —list-hosts
image.png

取hadoop_servers组与redis_servers组内的共有主机(交集):
[root@hadoop102 ~]# ansible ‘hadoop_servers:&redis_servers’ -i /etc/ansible/inventory.ini —list-hosts
image.png

取在hadoop_servers组内,但不在redis_servers组内的主机(排除):
[root@hadoop102 ~]# ansible ‘hadoop_servers:!redis_servers’ -i /etc/ansible/inventory.ini —list-hosts
image.png