基于国产UOS操作做系统第11章-ansible批量配置管理


风晓
风晓 2024-01-04 09:52:15 49520 赞同 0 反对 0
分类: 资源
Ansible的***个版本是0.0.1,发布于2012年3月9日,其作者兼创始人是Michael DeHaan。Michael DeHaan曾经供职于Puppet Labs、RedHat、Michael,在配置管理和架构设计方面有丰富的经验。其在RedHat任职期间主要开发了Cobble,经历了各种系统简化、自动化基础架构操作的失败和痛苦,在尝试了Puppet、Chef、Cfengine、Capistrano、Fabric、Function、Plain SSH等各式工具后,决定自己打造一款能结合众多工具优点的自动化工具,Ansible由此诞生。 Ansible版本更新速度非常快,有时会一天推出多个Dev版本,7天推出一个稳定版本。所以使用Ansible的过程中也需多留意官网的更新。

ansible的组成

------>Ansible主要由一下6部分组成

Ansible Playbooks:任务集,编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是json格式的YML文件。
Inventory:Ansible管理主机的清单。
Modules:Ansible执行命令的功能模块,多数为内置的核心模块,也支持自定义
Plugins:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,改功能不常用。
API:供第三方程序调用的应用程序编程接口;
Ansible:此处指的是组合nventory、Modules、Plugins、API的Ansible命令工具,其为核心执行工具

ansible工作流程
使用Ansible或Ansible-playbooks时,在服务器终端输入Ansible的Ad-Hoc命令集或palybook后,Ansible会遵循预先编排的规则将Playbooks逐条拆解为Play,再将paly组织成Ansible可识别的任务(Task),随后调用任务涉及的所有模块(modules)和插件(plugins),根据Inventory中定义的主机列表通过SSH将任务集以临时文件或命令的形式传输到远程客户端执行并返回执行结果,如果是临时文件,则执行完毕后自动删除。

环境准备:
4台虚拟机:
(ansible 192.168.200.1)
(node1 192.168.200.101)
(node2 192.168.200.102)
(node3 192.168.200.103)
所有机器都必须是免密登陆
4台主机上面配置/etc/hosts,以ansible主机为例
vim /etc/hosts
192.168.200.1 ansible
192.168.200.101 node1
192.168.200.102 node2
192.168.200.103 node3

for i in {101…103}; do scp /etc/hosts 192.168.200.$i:/etc/hosts; done

apt install -y ansible
主机清单
vim /etc/ansible/hosts
[web]
node1
node2

[db]
node3

结果测试
ansible all -m ping
node2 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
node1 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
node3 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

ansible web -m ping
node2 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}
node1 | SUCCESS => {
“changed”: false,
“ping”: “pong”
}

简单的批量执行
command命令模块
ansible all -m command -a “uptime”
ansible db -m command -a “useradd -m -s /bin/bash test”

shell模块
ansible db -m shell -a "echo “test:123” |chpasswd "

script模块
vim 1.sh
#!/bin/bash
touch /root/1.txt

ansible web -m script -a “/root/1.sh”

playbook
一个playbook由一个到多个play构成
每个play都可以指定对某些主机生效
每个play由一个多多个任务构成
执行任务通过调用模块来实现

yaml语法格式
同级别数据元素必须有相同的缩进
子元素必须比父元素缩进更多
推荐缩进两个空格
每个文件首行是“–”,最后一行是“…”
playbook是play 的列表,列表项表示为“-”
paly本身是key:val对的字典
帮助查看
ansible-doc apt

执行playbook
ansible-playbook --syntax-check **.yml //检测语法格式
ansible-playbook **.yml //执行playbook

实验-包含多个play的playbook
vim tow.yml
name: Execute NODE1
hosts: node1
tasks:
name: install http
apt:
name: apache2
state: present
name: Start service httpd, if not started
service:
name: apache2
state: started
name: Execute NODE2
hosts:
node1
node2
node3
tasks:
name: install gcc
apt:
name: gcc
state: present
ansible-playbook --syntax-check tow.yml
ansible all -m shell -a “apt update”
ansible-playbook tow.yml
curl 192.168.200.101 //验证可以访问到

实验-循环
同时启动ssh和apache
vim Circulates.yml
name: xhlx
hosts: node1
tasks:
name: sshd and apache2 are running
service:
name: “{{ item }}”
state: started
loop:
sshd
apache2
ansible-playbook --syntax-check Circulates.yml
ansible-playbook Circulates.yml
实验-变量及条件判断
变量my_service已定义,如果定义了,安装相应的软件包,没定义则跳过、也不会报错
vim tjpd.yml
name: panduan
hosts: all
vars:
my_service: apache2

tasks:

name: “{{ my_service }} package is installed”
apt:
name: “{{ my_service }}”
when: my_service is defined
判断路径:
hosts: all
remote_user: root
gather_facts: no
vars:
testpath1: “/etc”
testpath2: “/haha”
tasks:

debug:
msg: “directory”
when: testpath1 is directory
debug:
msg: “file”
when: testpath2 is file

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
风晓L1
粉丝 1 资源 2038 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  126
统信桌面专业版【全盘安装UOS系统】介绍  121
银河麒麟桌面操作系统安装佳能打印机驱动方法  114
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!