二、Ansible资产配置

资产介绍

Ansible资产分为静态资产跟动态资产,静态资产是将受管理主机的ip按一定格式写入/etc/ansible/hosts文件中。动态资产是使用-i选项指定一个脚本,该脚本能返回受管理主机的相关信息,也就是ip等。

动态资产后续会讲到,先看看静态资产。

INI跟YAML

/etc/ansible/hosts文件中受管主机的格式有INI风格跟YAML风格两种书写方式。
INI风格比较容易接受,但YAML风格以后写playbook需要用到,同样很重要。

INI风格写法

我们需要使用ansible管理的主机可以写入/etc/ansible/hosts文件

$ vim /etc/ansible/hosts
[A]
10.154.0.112
10.154.0.113

[B]
10.154.0.[114:115] #当IP地址是连续的可以这样写

[C]
Srv-a.baidu.com
Srv-[b:c].baidu.com #也可使用主机名方式

如上写法,主机112跟113在A组中,主机114在B组中,方便一起管理。

$ ansible A -m ping
10.154.0.112 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
...省略113主机ping信息

INI风格嵌套组

$ vim /etc/ansible/hosts
[web_servers]
10.154.0.111

[db_servers]
10.154.0.112

[all_servers] #可以不写此行
[all_servers:children]
db_servers
web_servers

使用children关键字来表示当前all_servers组存在子组。


YAML风格写法

YAML全称YAML Ain’t a Markup Language,意思是说YAML不是一种标记语言。但在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

举个例子

$ vim /etc/ansible/hosts
#YAML示例
all:
  hosts:
    10.154.0.111:
    10.154.0.112:

#上例写法相当于如下INI配置
$ vim /etc/ansible/hosts
10.154.0.111
10.154.0.112

这里要注意YAML格式每行以冒号结尾,前面有空格缩进。

YAML嵌套组

举个例子

#INI格式配置如下
$ vim /etc/ansible/hosts
10.154.0.111

[db_servers]
10.154.0.112

[web_servers]
10.154.0.113

#上述等同于如下YMAL格式
$ vim /etc/ansible/hosts
all:
  hosts:
    10.154.0.111:
  children:
    db_servers:
      hosts:
        10.154.0.112:
    web_servers:
      hosts:
        10.154.0.113:

注意定义每个组时2都需要使用hosts关键字,111主机不属于任何组也需要定义在hosts关键字下。

再接再厉例子

$ vim /etc/ansible/hosts
[web_servers]
10.154.0.111

[db_servers]
10.154.0.112

[all_servers] #可以不写此行
[all_servers:children]
db_servers
web_servers

#上述INI格式等同于如下YAML格式如下
$ vim /etc/ansible/hosts
all:
  children:
    all_servers:
      children:
        web_servers:
          hosts:
            10.154.0.111:
        db_servers:
          hosts:
            10.154.0.112:

是不是很懵逼,没事,懵一会就好了。哈哈,开玩笑,上述表示all下面有子组all_servers,所以要加children,同理,all_servers下面有两个子组,也要加children标识,web_servers跟db_servers下面没有子组,所以跟hosts即可。

使用别名配置受管主机

$ vim /etc/ansible/hosts
10.154.0.111
tz112 ansible_host=10.154.0.112 ansible_port=22
10.154.0.113

#上述INI格式等同于如下YAML格式
all:
 hosts:
  10.154.0.111:
  tz112:
   ansible_host: 10.154.0.112 #注意冒号后面有空格
   ansible_port: 22
  10.054.0.113:

分组的使用

1、查看所有资产

$ ansible all -i /etc/ansible/hosts --list-hosts

2、查看web_servers组的资产

$ ansible web_servers -i /etc/ansible/hosts --list-hosts

3、查看是否存在名为10.154.0.111的资产

$ ansible 10.154.0.111 -i /etc/ansible/hosts --list-hosts
$ ansible 10.154.0.111,10.154.0.112 -i /etc/ansible/hosts --list-hosts

4、使用*匹配

$ ansible 10.154.0.* -i /etc/ansible/hosts --list-hosts

5、查看web_servers和db_servers并集,即两组所有资产

$ ansible 'web_servers:db_servers' -i /etc/ansible/hosts --list-hosts

6、查看web_servers和db_servers交集,即两组都有的资产

$ ansible 'web_servers:&db_servers' -i /etc/ansible/hosts --list-hosts

7、对比web跟db组中所有资产,列出只存在web组中的资产

$ ansible 'web_servers:!db_servers' -i /etc/ansible/hosts --list-hosts

配置文件

除了ansible的资产配置清单,还有一个配置文件其路径为/etc/ansible/ansible.cfg

$ vim /etc/ansible/ansible.cfg
inventory = /etc/ansible/hosts 
#这个参数表示资源清单inventory文件的位置
library = /usr/share/ansible
#指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
forks = 5#并发连接数,默认为5
sudo_user = root#设置默认执行命令的用户
remote_port = 22
#指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全
host_key_checking = False
#设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例
timeout = 60
#设置SSH连接的超时时间,单位为秒
log_path = /var/log/ansible.log
#指定一个存储ansible日志的文件(默认不记录日志)

参考资料:
B站课程:千锋教育ansible P4-6
朱老师博客
珂儿吖博客

posted @ 2021-04-26 17:10  努力吧阿团  阅读(326)  评论(0)    收藏  举报