wordpress如何写网站,域名解析错误连不上网,做游戏平面设计好的素材网站有哪些,秦皇岛市人口编写ansible.cfg和清单文件ansible的基本用法
本章实验三台RHEL8系统#xff08;rhel801#xff0c;rhel802#xff0c;rhel803#xff09;#xff0c;其中rhel801是ansible主机
这里要确保ansible主机能够解析所有被管理的机器#xff0c;这里通过配置/etc/hosts来实现…编写ansible.cfg和清单文件ansible的基本用法
本章实验三台RHEL8系统rhel801rhel802rhel803其中rhel801是ansible主机
这里要确保ansible主机能够解析所有被管理的机器这里通过配置/etc/hosts来实现/etc/hosts的内容如下
[rootrhel801 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.161.16 rhel801
192.168.161.17 rhel802
192.168.161.18 rhel803
[rootrhel801 ~]#
在rhel802和rhel803两台机器上确认已经创建好jin用户三台机器都需要创建jin用户如果没有请自行创建然后配置sudo
[rootrhel802 ~]# cat /etc/sudoers.d/jin
jin ALL(root) NOPASSWD:ALL
[rootrhel802 ~]#
[rootrhel803 ~]# cat /etc/sudoers.d/jin
jin ALL(root) NOPASSWD:ALL
[rootrhel803 ~]#
这样在这两台机器上jin 用户通过sudo -i可以无密码切换到root用户
[jinrhel802 ~]$ sudo -i
[rootrhel802 ~]# exit
注销
[jinrhel802 ~]$
使用jin 用户登录server配置好ssh密钥登录使得jin 用户可以无密码登录到 server2和 server3
1.1 编写ansible.cfg和清单文件
执行ansible或ansible-playbook命令时优先使用当前目录中ansible.cfg的配置。如果 当前目录中没有则使用默认的/etc/ansible.cfg中的配置
下面的操作都是rhel801上的jin用户操作的先在家目录下创建ansible.cfg
[jinrhel801 ~]$ cat ansible.cfg
[defaults]
inventory ./hosts[privilege_escalation]
becomeTrue
become_methodsudo
become_userroot
[jinrhel801 ~]$
这里在[defaults]字段下只添加了一句inventory ./hosts表示把当前目录下名称为hosts的文件当作清单文件什么是清单文件马上就要讲到)
在 [privilege_escalation]字段下定义了如何提升权限因为是使用lduan用户登录到被管理主机的,所以需要提升权限。这个字段下写了3条分别如下
1becomeTrue:登录到被管理主机时要切换到其他用户
2become_methodsudo:以 sudo的方式切换
3become_user-root :切换到root用户
这三句的意思是当用ssh登录到被管理主机时以 sudo的方式切换到root这也是为什么一开始要在被管理主机上配置好sudo的原因
所有的被管理机器都要写入清单文件中。在实验环境中有两台被管理主机那么分别写在 hosts中,内容如下
[jinrhel801 ~]$ cat hosts
rhel802
rhel803
[jinrhel801 ~]$
这里一行一台主机我们在使用ansible或ansible-playbook命令时指定的主机名必须 是这个名称才行。要确保能解析rhel802和rhel8803写成相应的IP也可以
如果环境中被管理的主机很多把主机一台台地写进去太冗繁所以可以改成如下写法
[jinrhel801 ~]$ cat hosts
rhel802
rhel803
rhel8[10:15]
[jinrhel801 ~]$
这里加了一行rhel8[10:15]表示 rhel810到 rhel815这样在清单文件中就写了8台主 机需要注意的是,在我们的练习环境中rhel810到rhel815不存在)
如果在执行ansible命令时只是想在部分主机上执行那么在清单文件中可以对主机进行 分组。定义主机组时组名写在中括号“[]”中在[下面写的主机名都属于这个组直到定 义下一个组的位置为止。修改清单文件的内容如下
[jinrhel801 ~]$ cat hosts
rhel802
rhel803
rhel8[10:15][db1]
rhel80[2:5][db2]
rhel806
rhel807
[jinrhel801 ~]$
这里定义了两个主机组db1和db2db1组中包括的主机有rhel802到rhel805db2组中包 括的主机有rhel806和 rhel807
如果想定义一个主机组这个组中包括db1和db2两个主机组的主机可以用 children关 键字修改hosts的内容如下
[jinrhel801 ~]$ cat hosts
rhel802
rhel803
rhel8[10:15][db1]
rhel80[2:5][db2]
rhel806
rhel807[db3:children]
db1
db2
[jinrhel801 ~]$
这里定义了一个主机组db3但是后面加了“:children则这个主机组下面的db1和db2 就不再表示主机了而是表示主机组。所以db3这个主机组中所包括的主机是rhel802到 rhel805及rhel806和 rhel807这6台主机
下面查看每个主机组中有多少主机。首先查看主机组db1中的主机
[jinrhel801 ~]$ ansible db1 --list-hostshosts (4):rhel802rhel803rhel804rhel805
[jinrhel801 ~]$
共4台主机。查看主机组db2中的主机
[jinrhel801 ~]$ ansible db2 --list-hostshosts (2):rhel806rhel807
[jinrhel801 ~]$
共2台主机。查看主机组 db3中的主机
[jinrhel801 ~]$ ansible db3 --list-hostshosts (6):rhel802rhel803rhel804rhel805rhel806rhel807
[jinrhel801 ~]$
共6台主机与分析的是一样的。还有一个内置主机组叫作all表示所有主机
了解了清单文件的写法之后最终把清单文件写成如下内容
[jinrhel801 ~]$ cat hosts
rhel802
rhel803[db]
rhel802
rhel804
[jinrhel801 ~]$
1.2 ansible的基本用法
ansible的基本用法如下
ansible 机器名 ‐m 模块× ‐a 模块的参数
这里的机器名必须出现在清单文件中整体的意思是在指定的机器上执行模块x。例如,在 rhel802上执行hostname命令,命令如下
[jinrhel801 ~]$ ansible rhel802 -m shell -a hostname
rhel802 | CHANGED | rc0
rhel802
[jinrhel801 ~]$
shell模块用于执行操作系统命令执行的命令就作为shell模块的参数这里在-a中写要执行的系统命令。所以上面的命令就是在rhel802上执行hostname命令显示的结果是rhel802.rhce.cc
要完成不同的任务就需要调用不同的模块来实现系统中存在的所有 ansible模块可以通过ansible-doc -l来查看
不同的模块有不同的参数模块的参数及使用方法可以通过“ansible-doc模块名”来查看