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

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

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

1.1.3 基础配置

下面将讲解一些Ansible的基础知识来帮助读者掌握Ansible的基础知识及使用原则,具体有以下四个方面。

l 定义主机清单

l 测试连通性

l know_hosts

l ping&ssh

接下来将逐个介绍,具体内容如下。

1.定义主机清单

主机清单(Hpst Inventory),又称主机目录,是一个保存着Ansible主机的所有客户机信息与连接参数的文件,同时也用于主机分类。Ansible的主机清单默认为/etc/ansible/hosts文件。用户可直接在该文件中自定义主机,具体代码如下所示。

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

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

host1

host2

host3

此处需要注意的是,在填写主机清单的时候,要确保当前Ansible服务器“认识”主机清单中的这些主机。在1.2.1小节中,作者已在Ansible服务器中加入了这三台主机的自定义域名解析,故此处填写主机名即可,否则配置不生效。

2.测试连通性

Ansible的工作需要与客户机进行沟通,此处通过Ansible的ping模块去测试与客户机的连通性,出现“SUCCESS”即表示成功,代码及结果如下所示。

#ping 自己

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

localhost | SUCCESS => {

"changed": false,

"ping": "pong"

}

#ping host1

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

host1 | SUCCESS => {

"ansible_facts": {

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

},

"changed": false,

"ping": "pong"

}

通过代码的反馈结果可以看到,系统通过使用Ansible的ping模块成功连通了客户机host1。在该条命令中,-m参数用来指定模块,不同的模块功能也不同,ping只是其中的一个模块,还有一些其他模块后边将会讲到。使用过程中,运维人员可以添加一个参数“-o”,使其简洁化输出,代码及如下所示。

[root@ansible ~]# ansible host1 -m ping -o

host1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

需要注意的是,Ansible不能对未在主机清单中标注的客户机进行操作。

3.know_hosts

在使用ping模块测试时,如果是第一次与客户机产生联系,系统会询问是否确定继续连接。去掉系统询问的操作如下所示。

#在/etc/ssh/ssh_config文件中找到#StrictHostKeyChecking一行,去掉注释并将行尾ask改为no

[root@ansible ~]# vim /etc/ssh/ssh_config

...

StrictHostKeyChecking no

...

#修改后记得保存该文件,并重启sshd服务

[root@ansible ~]# systemctl restart sshd

然后再次连接客户主机,具体代码如下所示。

[root@ansible ~]# ansible host1 -m ping -u root -k -o

SSH password:

host1 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

上述示例中,参数-u用来指定用户,-k表示输入密码,-o表示简洁的输出。现在再使用ping模块时,系统已经不会出现询问。

4.ping&ssh

ansible的各个模块是相关联的,当一个模块无法连通客户机时,与之关联的模块可能也会出现问题。

首先将客户机host1的SSH服务关闭,具体代码如下所示。

[root@host1 ~]# systemctl stop sshd

接着通过Ansible服务器的ping模块去连接客户机host1,具体代码如下所示。

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

host1 | UNREACHABLE! => {

"changed": false,

"msg": "Failed to connect to the host via ssh: ssh: connect to host host1 port 22: Connection refused",

"unreachable": true

}

上述示例中,在客户机SSH服务关闭之后,Ansible服务器便无法通过ping模块连接客户机。由上述实验结果可知,Ansible是依赖SSH协议去通信的,想要使用它必须先让Ansible服务器与客户机的SSH保持连通性。并且Ansible的ping模块可用于探测服务器之间的SSH是否连接。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1.3 基础配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档