【Ansible 自动化配置管理实践】02、Ansible Inventory、Ad-hoc 基本应用

目录

一、Ansible Inventory

1.1 Inventory 是什么

1.2 Inventory-密码连接方式

1.3 Inventory-秘钥连接方式

1.4 Inventory-主机匹配方式

1.5 实战-通过普通用户管理被控端

二、Ansible ad-hoc

2.1 ad-hoc 是什么

2.2 ad-hoc 命令使用

2.3 ad-hoc 执行过程

2.4 ad-hoc 执行状态


 

一、Ansible Inventory

1.1 Inventory 是什么

        Inventory 文件主要用来填写被管理主机以及主机组信息;(逻辑上定义);默认 Inventory 文件为 /etc/ansible/hosts;当然也可以自定义一个文件,当执行 ansible 命令时使用 -i 选项指定 Inventory 文件位置。

1.2 Inventory-密码连接方式

在主控端如何访问被控端主机方法:被控端用户名+密码

1、指定主机 IP,指定主机端口,指定主机用户名、密码:

# 编写主机清单
[root@k8s-master1 ~]# vim /etc/ansible/hosts
[webservers]
192.168.170.141 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='root'
192.168.170.142 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass='root'

[dbservers]
192.168.170.143

# 验证
[root@k8s-master1 ~]# ansible webservers -m ping

2、通过变量方式定义:

[root@k8s-master1 ~]# vim /etc/ansible/hosts
[webservers]
192.168.170.141
192.168.170.142

[webservers:var]
ansible_ssh_port=22
ansible_ssh_user=root
ansible_ssh_pass='root'

[dbservers]
192.168.170.143

# 验证
[root@k8s-master1 ~]# ansible webservers -m ping

1.3 Inventory-秘钥连接方式

先免密,然后定义主机组即可完成通讯。

1、创建秘钥对,然后下发秘钥:

[root@k8s-master1 ~]# ssh-keygen -t rsa
[root@k8s-master1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.170.142
[root@k8s-master1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.170.143

2、配置 Inventory 主机清单:

[root@k8s-master1 ~]# vim /etc/ansible/hosts
[webservers]
192.168.170.141
192.168.170.142

# 验证
[root@k8s-master1 ~]# ansible webservers -m ping

1.4 Inventory-主机匹配方式

ansible 的 host-pattern 主机匹配使用说明。

#1. 指定操作所有的组
ansible all -m ping

#2. 通配符
ansible "*" -m ping
ansible 10.0.0.* -m ping

#3. 与:在 webservers 组并且在 dbsservers 中的主机
ansible "webservers:&dbservers"-m ping

#4. 或:在 webservers 组,或者在 dbsservers 中的主机
ansible "webservers:dbsservers" -m ping

#5. 非:在 webservers 组,但不在 dbsservers 组中的主机
ansible 'webservers:!dbsservers' -m ping

#6. 正则表达式,
ansible "~(web|db).*" -m ping

1.5 实战-通过普通用户管理被控端

场景说明:ansible 使用 sky 普通用户统一管理所有的被控端节点。

1、首先控制端和被控端,都需要有 sky 用户:

useradd sky
echo "sky" | passwd --stdin sky

2、将控制端 sky 用户的公钥推送到被控端 sky 用户下,使普通用户能进行免密码登录:

[root@k8s-master1 ~]# su - sky
[sky@k8s-master1 ~]$ ssh-keygen -t rsa
[sky@k8s-master1 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub sky@192.168.170.142
[sky@k8s-master1 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub sky@192.168.170.143

3、所有主机的 sky 用户都必须添加 sudo 权限:

visudo
sky     ALL=(ALL)       NOPASSWD:ALL

4、修改控制端 /etc/ansible/ansible.cfg 主配置文件,配置普通用户提权:

[root@k8s-master1 ~]# vim /etc/ansible/ansible.cfg 
[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

5、使用 sky 用户测试是否能执行任务

[sky@k8s-master1 ~]$ ansible webservers -m ping

二、Ansible ad-hoc

2.1 ad-hoc 是什么

ad-hoc 简而言之就是 “临时命令”,执行完即结束,并不会保存

  • 应用场景 1:查看多台节点的进程是否存在;

  • 应用场景 2:拷贝指定的文件至本地。

2.2 ad-hoc 命令使用

命令示例:ansible 'groups' -m command -a 'df -h',含义如下图所示:

2.3 ad-hoc 执行过程

  1. 加载自己的配置文件,默认 /etc/ansible/ansible.cfg

  2. 查找对应的主机配置文件,找到要执行的主机或者组

  3. 加载自己对应的模块文件,如 command

  4. 通过 ansible 将模块或命令生成对应的临时 py 文件,并将该文件传输至远程服务器对应执行用户 $HOME/.ansible/tmp/ansible-tmp-number/XXX.PY

  5. 执行用户家目录的文件

  6. 给文件 +x 执行

  7. 执行并返回结果

  8. 删除临时 py 文件,sleep 0 退出

2.4 ad-hoc 执行状态

使用 ad-hoc 执行一次远程命令,注意观察返回结果的颜色:

  • 绿色:代表被管理端主机没有被修改

  • 黄色:代表被管理端主机发现变更

  • 红色:代表出现了故障,注意查看提示

上一篇文章:【Ansible 自动化配置管理实践】01、Ansible 快速入门-CSDN博客

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Stars.Sky

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值