前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux云计算运维架构师(连载)-自动化运维ansible-07

Linux云计算运维架构师(连载)-自动化运维ansible-07

原创
作者头像
用户1880875
修改2021-07-05 14:27:25
7980
修改2021-07-05 14:27:25
举报
文章被收录于专栏:用户1880875的专栏

1.1.4 设置变量

在Ansible中的变量分为内置变量与自定义变量,通过在主机清单中添加一些变量能简化主机清单的设置。1.3.2小节在主机清单中添加客户机的用户名与密码,其实就是在向主机清单中添加变量。

Ansible常用的内置变量如表1.2所示。

表1.1 Ansible常用内置变量

变量

说明

ansible_ssh_host

定义hosts ssh地址

ansible_ssh_port

定义hosts ssh端口

ansible_ssh_user

定义hosts ssh认证用户

ansible_ssh_pass

定义hosts ssh认证密码

ansible_sudo

定义hosts sudo用户

ansible_sudo_pass

定义hosts sudo密码

ansible_sudo_exe

定义hosts sudo路径

当需要对一个主机组添加一些变量时,可以为这个主机组配置一个专属的变量组,具体代码如下所示。

[root@ansible ~]# vim /etc/ansible/hosts

[root@ansible ~]# cat /etc/ansible/hosts

#主机组

[webserver]

host[1:3]

#变量组

[webserver:vars]

ansible_ssh_user='root'

ansible_ssh_pass='f'

读者可根据需要设置不同的变量信息。这里需要注意的是,Ansible变量组的格式必须是“[主机组名:vars]”,否则系统将会报错。

1.1.5 设置子分组

Ansible可以将不同的分组进行组合,达到便捷管理的目的,示例如下所示。

[root@ansible ~]# cat /etc/ansible/hosts

#子分组

[apache]

Host[1:2]

#子分组

[nginx]

Host3

#主机组

[webserver:children]

apache

nginx

#主机组变量

[webserver:vars]

ansible_ssh_user='root'

ansible_ssh_pass='1'

上述代码中,webserver组中包含了apache组和nginx组,三个组名可以随意调用。此处需要注意的是,当分组中包含子分组时,分组名称的格式必须是“[分组名:children]”。此处尝试连接3个主机组,测试其连通性,实验代码及结果如下所示。

l 测试apache组

[root@ansible ~]# ansible apache -m ping

host1 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

host2 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

l 测试nginx组

[root@ansible ~]# ansible nginx -m ping

host3 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

l 测试webserver组

[root@ansible ~]# ansible webserver -m ping

host2 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

host3 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

host1 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

从代码的反馈结果可以看到,三个主机组均可以连通。当客户机机数量过多,且部分主机功能一致时,可以采取创建子分组的形式进行管理。

1.1.6 自定义主机列表

当客户机数量增大时,可以创建多个主机清单进行管理,或将其存放到不同的路径下。下面在/root下创建一个主机清单hostlist,具体代码如下所示。

[root@ansible ~]# vim hostlist

[root@ansible ~]# cat hostlist

[dockers]

host1

host2

[dockers:vars]

ansible_ssh_user='root'

ansible_ssh_pass='f'

此处创建的主机清单hostlist中仅包含一个主机组与一个变量组。创建完成后,通过该主机清单对客户机进行连接(-i参数可以用户指定主机清单),结果如下所示。

[root@ansible ~]# ansible -i hostlist dockers -m ping

host2 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

host1 | SUCCESS => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": false,

"ping": "pong"

}

通过代码的反馈结果可以看到,系统通过指定自定义的主机清单对客户机进行了连接,并且连接成功。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1.4 设置变量
  • 1.1.5 设置子分组
  • 1.1.6 自定义主机列表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档