天天看点

Ansible自动化运维工具之主机管理与自定义配置文件(2)

Ansible自动化安装入门,看这一篇就够了

Ansible有很多配置参数,以下是⼏个默认的配置参数:

 <code>inventory</code>:该参数表⽰inventory⽂件的位置,资源清单(inventory)就是Ansible需要连接管理的⼀些主机列表。

 <code>library</code> :Ansible的所有操作都使⽤模块来执⾏实现,这个library参数就是指向存放Ansible模块的⽬录。

 <code>forks</code>:设置默认情况下Ansible最多能有多少个进程同时⼯作,默认5个进程并⾏处理。具体需要设置多少个,可

以根据控制端性能和被管理节点的数量来确定。

 <code>sudo_user</code>:设置默认执⾏命令的⽤户,也可以在playbook中重新设置这个参数。

 <code>remote_port</code>:指定连接被管理节点的管理端⼝,默认是22,除⾮设置了特殊的SSH端⼝,否则不需要修改此参数。

 <code>host_key_checking</code> :设置是否检查SSH主机的密钥。可以设置为True或False。即ssh的主机再次验证。如果为False,则不需要输入yes;如果为True,则等待输入yes。

 <code>timeout</code>:设置SSH连接的超时间隔,单位是秒。

 <code>log_path</code>:Ansible默认不记录⽇志,如果想把Ansible系统的输出记录到⽇志⽂件中,需要设置log_path。需要注意,模块将会调⽤被管节点的®syslog来记录,执⾏Ansible的⽤户需要有写⼊⽇志的权限。

 <code>注意:可以指定多个inventory配置⽂件,只需在ansible的配置⽂件如/etc/ansible/ansible.cf g中将inventory指令设置为对应的⽂件或⽬录即可,如果是⽬录,那么此⽬录下的所有⽂件都是inventory⽂件。</code>

<code>inventory</code>:指定的配置文件,写入远程主机的地址。定义被托管主机地址配置文件路径名。

 格式:

    - # 表示注释

        [组名称]

        主机名称或IP地址,其他参数

Ansible自动化运维工具之主机管理与自定义配置文件(2)

 由于之前我们在所有主机上都配置好了/etc/hosts,所以以上配置也可以直接写成:

Ansible自动化运维工具之主机管理与自定义配置文件(2)

列出所有主机组的主机 :<code>ansible all --list-hosts</code>

列出xx主机组的主机 :<code>ansible ‘主机组名’ --list-hosts</code>

批量检测主机并使用交互式登录密码:<code>ansible all -m ping -k</code>

 1.创建自定义文件夹myansible

 2.创建自定义配置文件ansible.cfg

 3.指定inventory配置自定义的hosts⽂件

 <code>注意:在ansible.cfg配置文件中指定inventory的hosts文件时,可以指定为相对路径(当前路径下),也可以指定为绝对路径,因为在使用自定义的ansible配置文件运行ansible时,都只能在自定义的文件夹中使用才可以识别。</code>

4.自定义配置文件测试:

 4.1主机组k8s

 可以看到在我们退出自定义配置文件夹myansible后,再使用ansible命令ping我们myhosts文件中的k8s主机组时,就无法正常识别了。

 当然,在我们自定义的ansible.cfg配置文件夹/root/myansible中执行ping主机组k8s_node(ansible安装完默认的inventory配置⽂件/etc/ansible/hosts中的主机组)时,肯定也是无法识别的。

4.2主机组all

 <code>注意:在有自定义的配置文件时使用ansible操作主机组all时有两种情况,一是在自定义的配置文件夹中使用ansible控制主机组all时,就默认读取的是自定义配置文件夹中ansible.cfg定义的inventory的hosts文件,二是在其他路径下使用ansible控制主机组all时,则会默认读取ansible默认配置文件ansible.cfg中inventory的hosts文件。</code>

- 验证 -:

 1.先修改ansible默认的/etc/ansible/hosts配置文件

 2.退出自定义配置文件夹/root/myansible时执行ping所有主机组all

 从上面返回的结果我们可以看出,当我们在退出自定义配置文件夹/root/myansible后执行ping所有主机组all时,ansible默认是读取的ansible.cfg配置文件中指定inventory的hosts文件/etc/ansible/hosts中的配置。

 3.进入自定义配置文件夹/root/myansible时执行ping所有主机组all

 可以看到在进入自定义的配置文件夹/root/myansible中使用ansible的ping模块操作所有主机组all时,就会默认读取自定义配置文件夹中ansible.cfg定义的inventory的hosts文件。

最终解决方案:

 <code>使用 -i 指定使用的配置文件</code>

 可以看到在我们使用了<code>-i</code>选项来指定这一次ansible控制时使用的hosts配置文件时,无论我们当前在哪个文件夹中,都不影响此次ansible正确读取指定的配置文件。

 有兴趣的小伙伴可以关注我的微信公众号,上面会分享一些运维知识,大家点点发财手关注一波,一起学习交流,感谢大家!!! <code>【原创公众号】:非著名运维 【福利】:公众号回复 “资料” 送运维自学资料大礼包哦!</code>

Ansible自动化运维工具之主机管理与自定义配置文件(2)