python—–ansible

  • Post author:
  • Post category:python




一.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 版权协议,转载请附上原文出处链接和本声明。