Ansible纸上谈兵01:认识一下Ansible(1)

  1. 控制端(Control Node):安装 Ansible 的主机称为控制端(本身也可以作为自己的被控端);只需要在控制端安装 Ansible 即可。

  2. 被控端(Managed Node):具体执行任务的主机,可以有多个被控端。

  3. 资源清单(Inventory):控制端管理的一个主机列表,默认配置在 /etc/ansible/hosts 文件中。它包含每个节点的信息,比如 IP 地址或其主机名,可进行逻辑分组(单个主机、多个主机分组),对不同的主机和不同的主机组,做不同的操作。

  4. 模块(Module):真正用于执行特定任务的基础单元,可通过 ansible-doc -l | wc -l 查看 Ansible 生态现有模块的数量。

  5. ad-hoc: 临时命令,单条指令执行,在被控端一次执行一条指令。

  6. playbook: 以YAML格式组织的指令集合,类似 Shell 脚本,在被控端一次执行多个任务;可以将 Playbook 理解为一门编程语言。

How:如何使用Ansible

  • 前提条件
  1. 在控制端与被控端都安装有Python环境;

  2. 主控端与被控端开启免密远程登录;

编辑/etc/hosts文件,添加集群中所有主机名

[root@ecs-kunpeng-0001 ~]# vim /etc/hosts

追加以下内容

192.168.0.6 control

192.168.0.53 node1

192.168.0.39 node2

192.168.0.46 node3

192.168.0.235 node4

192.168.0.166 node5

测试通过主机名在局域网内是否可以进行通信

[root@ecs-kunpeng-0001 ~]# ping node1

在控制端生成公钥与私钥

[root@ecs-kunpeng-0001 ~]# ssh-keygen -f /root/. ssh/id_rsa -N ‘’

将SSH密钥复制到局域网内的被控端主机

[root@ecs-kunpeng-0001 ~]#

for i in node1 node2 node3 node4 node5

do

ssh-copy-id $i

done

测试是否可通过SSH免密登录

[root@ecs-kunpeng-0001 ~]# ssh node1

  • 安装Ansible

参考在华为鲲鹏openEuler20.03系统上安装Ansible

  • 配置主机清单

配置主机清单,并对其进行分组(1个控制端,3个web服务,1个数据库服务,1个缓存服务)。

Ansible默认的配置文件位于/etc/ansible/hosts

[root@ecs-kunpeng-0001 ~]# vim /etc/ansible/hosts

在其中追加以下内容

[controller]

192.168.0.6

[web]

192.168.0.53

192.168.0.39

192.168.0.46

[db]

192.168.0.235

[cache]

192.168.0.166

  • 常用指令

列出所有主机,all是一个关键字,表示主机清单中的所有主机

[root@ecs-kunpeng-0001 ~]# ansible all --list-hosts

hosts (6):

192.168.0.6

192.168.0.53

192.168.0.39

192.168.0.46

192.168.0.235

192.168.0.166

列出指定分组下的主机

[root@ecs-kunpeng-0001 ~]# ansible web --list-hosts

hosts (3):

192.168.0.53

192.168.0.39

192.168.0.46

对指定

必看视频!获取2024年最新Java开发全套学习资料 备注Java

分组下的主机执行ping命令

[root@ecs-kunpeng-0001 ~]# ansible web -m ping

192.168.0.39 | SUCCESS => {

“changed”: false,

“ping”: “pong”

}

192.168.0.46 | SUCCESS => {

“changed”: false,

“ping”: “pong”

}

192.168.0.53 | SUCCESS => {

“changed”: false,

“ping”: “pong”

}

对所有主机执行uptime命令

[root@ecs-kunpeng-0001 ~]# ansible all -m command -a “uptime”

192.168.0.46 | CHANGED | rc=0 >>

23:00:35 up 54 days, 7:25, 1 user, load average: 0.00, 0.00, 0.00

192.168.0.53 | CHANGED | rc=0 >>

23:00:35 up 54 days, 7:25, 1 user, load average: 0.00, 0.00, 0.00

192.168.0.39 | CHANGED | rc=0 >>

23:00:35 up 54 days, 7:25, 1 user, load average: 0.00, 0.00, 0.00

192.168.0.6 | CHANGED | rc=0 >>

23:00:35 up 51 days, 14:15, 5 users, load average: 0.17, 0.17, 0.16

192.168.0.235 | CHANGED | rc=0 >>

23:00:35 up 54 days, 7:25, 1 user, load average: 0.00, 0.00, 0.00

192.168.0.166 | CHANGED | rc=0 >>

23:00:36 up 54 days, 7:25, 1 user, load average: 0.00, 0.00, 0.00

对指定分组下的主机执行hostname命令

[root@ecs-kunpeng-0001 ~]# ansible web -m command -a “hostname”

192.168.0.39 | CHANGED | rc=0 >>

ecs-kunpeng-0003

192.168.0.46 | CHANGED | rc=0 >>

ecs-kunpeng-0004

192.168.0.53 | CHANGED | rc=0 >>

ecs-kunpeng-0002

Note: ad-hoc命令返回信息的颜色不同,分别表示:

绿色:表示被控端没有修改;

黄色:表示被控端发生变更;

红色:表示有错误,关注提示信息;

遇到的问题:在执行每条ad-hoc命令时,每个主机会有一个警告。

[WARNING]: Platform linux on host 192.168.0.46 is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change this. See https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.

解决方法:有多种方法可以处理这个警告,最简单的方式是采用命令后附加参数,如下

附带ansible_python_interpreter参数,去掉警告信息

ansible web -m ping -e ‘ansible_python_interpreter=/usr/bin/python3’

通过这篇文章,算是大概了解了 Ansible 及其特性,接下来便可以通过这个强大工具管理我们的服务集群了。

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

_python_interpreter=/usr/bin/python3’

通过这篇文章,算是大概了解了 Ansible 及其特性,接下来便可以通过这个强大工具管理我们的服务集群了。

[外链图片转存中…(img-95zhM17E-1716468101576)]

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

[外链图片转存中…(img-ltkttcB3-1716468101577)]

  • 30
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值