您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
ansible运维自动化
 
作者: chao199512
   次浏览      
 2019-12-13
 
编辑推荐:
本文阐述了Ansible是什么、Ansible 特点、ansible工作机制,部署实验环境,希望对您的学习有所帮助。
本文来自于csdn,由火龙果软件Delores编辑、推荐。

简介:

当下有许多的运维自动化工具(配置管理),例如:Ansible、SaltStack、Puppet、Fabric 等。

Ansible 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。

Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。

(1)Ansible是什么?

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于 paramiko 开发的,并且基于模块化工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible不需要在远程主机上安装client/agents,因为它们是基于ssh来和远程主机通讯的。

(2)Ansible 特点:

部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作。

默认使用 SSH(Secure Shell)协议对设备进行管理。

主从集中化管理。

配置简单、功能强大、扩展性强。

支持 API 及自定义模块,可通过 Python 轻松扩展。

通过 Playbooks 来定制强大的配置、状态管理。

对云计算平台、大数据都有很好的支持。

提供一个功能强大、操作性强的Web管理界面和REST API接口 —- AWX 平台。

(3)ansible工作机制

Ansible:ansible核心程序;

Hostlnvetory:记录ansible管理的主机信息,包括端口,密码,ip等;

Playbooks:”剧本”YAML格式文件,多个任务定义在一个文件中,定义主机需要调用哪些模块来完成的功能

coreModukes:核心模块,主要操作是通过核心模块来完成管理任务。

customModules:自定义模块,完成核心模块无法完成的功能,支持多种语言。

ConnectionPlugins:连接插件,ansible和host通信;

(4)Ansible与SaltStack

最大的区别是 Ansible 无需在被监控主机部署任何客户端代理,默认通过 SSH 通道进行远程命令执行或下发配置。 相同点是都具备功能强大、灵活的系统管理、状态配置,都使用 YAML 格式来描述配置,两者都提供丰富的模板及 API,对云计算平台、大数据都有很好的支持。

官网:

部署

实验环境:rhel6.5

主机:server4———》172.25.254.4

步骤:

(1)安装ansible

[root@server4 rhel6]# rpm
-ivh ansible-2.1.0.0-1.el6.
noarch.rpm

需要解决依赖性

(2)安装release包,会生成.repo的yum源配置文件

root@server4 rhel6]# yum
install epel-release-6-5.
noarch.rpm -y

(3)使server4可以上网

server4上:

[root@server4 rhel6]#
route add default gw
172.25.254.250
[root@server4 rhel6]#
vim /etc/resolv.conf
nameserver 114.114.114.114
[root@server1 rhel6]#
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@server1 rhel6]#sysctl-p

真机上(添加防火墙协议):

root@foundation77 repodata]#
iptables -t nat -I POSTROUTING
-s 172.25.254.0/24 -j MASQUERADE

(4)ansible配置文件

[root@server4 rhel6]#
rpm -qc ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts

设置/etc/ansible/ansible.cfg配置参数,ansible有许多参数,下面列出常用的参数:

inventory:#这个参数表示资源清单inventory文件的位置,资源清单就是一些ansible需要连接管理的主机列表。

library: ansible的操作动作,无论是本地或远程,都使用一小段代码来执行,这小段代码称为模块,这个library参数就是指向存放ansible模块的目录。

forks:设置默认情况下ansible最多能有多少个进程同时工作, 从ansible 1.3开始,fork数量默认自动设置为主机数量或者潜在的主机数量,默认设置最多5个进程并行处理。具体需要设置多少个,可以根据控制主机的性能和被管节点的数量来确定,可能是 50或100。默认值5是非常保守的值

sudo_user:这是设置默认执行命令的用户,也可以在playbook中重新设置这个参数。

remote_port:这是指定连接被管节点的管理端口,默认是22。除非设置了特殊的SSH端口,不然这个参数一般是不需要修改的。

host_key_checking:这是设置是否检查SSH主机的密钥。可以设置为True或False,关闭后第一次连接没有提示

timeout:这是设置SSH连接的超时间隔,单位是秒。

log_path:**ansible系统默认是不记录日志的,如果想把ansible系统的输出记录到日志文件中,需要设置log_path来指定一个存储ansible日志的文件。

(5)设置ansible主机

vim /etc/ansible/hosts

(6)设置ssh免密

[root@server4 ~]#
ssh-keygen -t rsa
[root@server4 ~]#
cp id_rsa.pub authorized_keys
[root@server4 ~]#
cd ~/.ssh/
[root@server4 .ssh]# ls
authorized_keys id_rsa
id_rsa.pub known_hosts
[root@server4 .ssh]#
scp * root@172.25.254.5:/root/.ssh/
[root@server4 .ssh]#
scp * root@172.25.254.6:/root/.ssh/

(7)测试Ansible(all为操作hosts文件中所有主机,-m指定执行ping模块,下面是返回结果)

(8)ansible 命令详解

-a # 模块的参数。
-B # 异步运行时,多长时间超时。
-P #如果使用-B,则设置轮询间隔。
-C # 只是测试一下会改变什么内容,
不会真正去执行;相反,试图预测
一些可能发生的变化。
-D # 当更改文件和模板时,
显示这些文件得差异,比–check效果好。
-f # 指定定要使用的并行进程数,
默认为5个。
-i # 指定主机清单文件或逗号
分隔的主机,默认为/etc/ansible/hosts。
-l # 进一步限制所选主机/组模式,
只执行-l 后的主机和组。
也可以这样使用 -l @retry_hosts.txt
-m # 要执行的模块,默认为command。
-M # 要执行的模块的路径。
-o # 压缩输出,摘要输出.
尝试一切都在一行上输出。
-v, –verbose # 输出执行的详细信息,
使用-vvv获得更多,-vvvv 启用连接调试
–version # 显示程序版本号
-e –extra-vars=EXTRA_VARS #
添加附加变量,比如key=value,
yaml,json格式。
–list-hosts # 输出将要操作的
主机列表,不会执行操作
–output=OUTPUT_FILE # 加密或
解密输出文件名 用于标准输出。
–tree=TREE # 将日志内容保存在该目录中,
文件名以执行主机名命名。
–syntax-check # 对playbook进行语法检查,
且不执行playbook。
–ask-vault-pass # vault 密码。
–vault-password-file=VAULT_PASSWORD
_FILE vault密码文件
–new-vault-password-file=NEW_VAULT
_PASSWORD_FILE 新vault密钥文件。

(9)查看ansible主机网络参数

root@server1 ~]# ansible
all -m command -a 'ifconfig'

 
   
次浏览       
相关文章

DevOps转型融入到企业文化
DevOps 能力模型、演进及案例剖析
基于 DevOps 理念的私有 PaaS 平台实践
微软开发团队的DevOps实践启示
相关文档

DevOps驱动应用运维变革与创新
运维管理规划
如何实现企业应用部署自动化
运维自动化实践之路
相关课程

自动化运维工具(基于DevOps)
互联网运维与DevOps
MySQL性能优化及运维培训
IT系统运维管理