一.Ansible安装与基础
Ansible
是
自动化运维工具
,基于
Python
开发,集合了众多运维工具(
puppet
、
chef
、
func
、 fabric)的优点,
实现了
批量系统配置、批量程序部署、批量运行命令等功能
。
跟ansible有同样功能的是Puppet、Chef、Ansible和SaltStack
Ansible
是基于
paramiko
开发的
,
并且基于模块化工作,本身没有批量部署的能力。
真正具有批量 部署的是Ansible
所运行的模块,
Ansible
只是提供一种框架。
Ansible
不需要在远程主机上安装 client/agents,因为它们是基于
ssh
来和远程主机通讯的。
Ansible
的安装
pip3 install ansible -i https://pypi.douban.com/simple
Ansible
的配置文件
/etc/ansible/ansible.cfg
: Ansible
执行需求的
全局性、默认
的配置文件
[default]# 资源清单inventory文件的位置
inventory = /etc/ansible/hosts
# 指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以
library = /usr/share/ansible
# 设置默认执行命令的用户
sudo_user = root
# ssh连接的管理端口,默认为22端口,建议修改,更加安全
remote_port = 22
#存储ansible日志文件,默认不记录日志
log_path = /var/log/ansible.log
[ssh_connection]
ssh_args = -o StrictHostKeyChecking=no
/etc/ansible/hosts:
默认的主机资产清单文件
vim /etc/ansible/hosts
# ssh
用户名
+ssh
用户密码
[
test
]
47.92.255.98
:
22
ansible_ssh_user
=
root ansible_ssh_pass
=
‘
主机密码
‘
检查环境变量
ANSIBLE_CONFIG
指向的路径文件
export ANSIBLE_CONFIG=/etc/ansible/ansible.cfg
列出所有主机组的主机清单
ansible
all
–list-hosts
列出
test
主机组的主机清单
ansible test –list-hosts
批量执行主机命令
ansible all -a ‘date’
二、Ansible ad-hoc模式
什么是
ad-hoc
模式
?
Ad-Hoc
简而言之是
“
临时命令
”.
Ansible
提供两种完成任务方式:
Ad-Hoc
模式,即命令集,适合解决一些简单或者平时工作中临时遇到的任务。
PlayBook
模式, 即
Ansible-playbook
剧本,适合解决复杂或需固化下来的任务。
ad-hoc
模式使用场景
场景一
:
在多台电脑上,查看某个进程是否启动。
场景二
:
在多台机器上, 拷贝指定日志文件到本地。
场景三
:
检查
proxy
主机组的所有主机是否存活。
场景四
:
在多台机器上, 查看
proxy
主机组所有主机的磁盘容量。等等
ad-hoc
模式的命令使用
Ad-Hoc
命令集由
/usr/bin/ansible
实现,其命令用法如下:
ansible <host-pattern> [options]
host-pattern
:用于匹配主机名或者主机组名
option:
包含执行的模块和执行的命令参数
ad-hoc
模块案例练习
需求
1:
主机连通性测试
(ping
模块
)
需求
2:
查看主机
root
用户的详细信息
(shell
模块
)
需求
3:
备份主机的日志文件
/var/log/messages
到
/mnt/
目录
(copy
模块
)
需求
4:
给定文件内容
“hello ansible”
生成文件
/mnt/ansible
,并指定权限为
666(copy
模块
)
需求
5:
主机批量安装软件
gcc
和
nginx(yum
模块
)
需求
6:
启动
nginx
服务
(service
模块
)
和判断
nginx
的
80
端口是否打开
(shell
模块
-ss -ntl)
需求
7:
主机新建
uid=8888
的用户
user1
需求
8:
拉取
Github
项目项目到主机并部署
(git
模块
)
需求
9
:搜集主机信息并筛选与内存
Memory
相关的信息
(setup
模块
)
三、 Ansible Playbook模式
4.1
什么是
Playbook
及其组成
playbook
不同于
ad-hoc
模式,适合部署复杂应用程序。优势
:
Playbook
可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。
playbook
是通过
YAML
格式来进行描述定义的
,
语法简单,操作方便。
playbook
由一个或者多个
play
组成, 一个
play
可以包含多个
task,
因此可使用多个不同的模块,完
成一件事情。
play:
定义的是主机的角色
task:
定义具体执行的任务,由模板定义的操作列表
Playbook
的配置语法
ansible-playbook playbook.yml [options]
playbook
的第一个应用案例
yaml
语法要点
:
yaml
文件以
“—”
作为文档的开始
缩进
:
表示层级结构,每个缩进由两个空格组成
,
不能使用
tab
。
冒号
:
以冒号结尾的除外,其他所有冒号后面所有必须有空格。
短横线
:
表示列表项,使用一个短横杠加一个空格。
大小写敏感
yaml的配置文件
—
– hosts: test
remote_user: root
vars:
filename: “westos.py”
tasks:
– name: test
file: name=/mnt/{
{filename}} state=’touch’
执行命令:
ansible-playbook –list-hosts westos1.yml
ansible-playbook westos1.yml
ansible-playbook westos.yml -i /etc/ansible/hosts
版权声明:本文为lcqrehl原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。