自动化运维工具Ansible基础部署与使用

目录

一、安装部署

二、 配置

Ansible最基础的模块为ping模块,主要用于判断远程客户端是否在线,用于ping本身服务器,返回值为changed、ping。

三、ansible批量管理

Ⅰ、shell模块

Ⅱ、copy模块

Ⅲ、yum模块

Ⅳ、file模块 

Ⅴ、cron模块

Ⅵ、user模块

Ⅶ、service模块

Ⅷ、synchronize

四、ansible剧本


一、安装部署

yum install epel-release
#Centso 需要设置EPEL仓库

yum install ansible
#安装ansible 

ansible --version
#查看ansible版本

二、 配置

测试环境

ansible      192.168.116.26

test server 192.168.116.27

cd /etc/ansible
ls
ansible.cfg  hosts  roles

在hosts文件中写入记录

自动化运维工具Ansible基础部署与使用_第1张图片

如果想要对主机组使用root权限的操作,需要做以下设置

vim /etc/ansible/ansible.cfg

自动化运维工具Ansible基础部署与使用_第2张图片

 然后在./hosts文件中相应主机组下进行设置

[test]
192.168.11.13 ansible_become_pass=12345678
192.168.11.14 ansible_become_pass=12345678

或者

[test]
192.168.11.13
192.168.11.14
 
[test:vars]
ansible_become_pass=12345678

分发ssh密钥

ssh-keygen -t rsa

ssh-copy-id 192.168.116.27

Ansible最基础的模块为ping模块,主要用于判断远程客户端是否在线,用于ping本身服务器,返回值为changed、ping。

测试组群testserver下的机器能否ping通

ansible -i /etc/ansible/hosts 'testserver' -m ping

或者ping某一网段的机器

ansible 192.168.116.* -w ping

自动化运维工具Ansible基础部署与使用_第3张图片

三、ansible批量管理

Ⅰ、shell模块

# Ansible shell模块主要用于远程客户端上执行各种Shell命令或者运行脚本,远程执行命令通过/bin/sh环境来执行,支持比command更多的指令,Shell模块使用详解:

# 常用参数
chdir					执行命令前,切换到目录;
creates					当该文件存在时,则不执行该步骤;
executable				换用shell环境执行命令;
free_form				需要执行的脚本;
removes					当该文件不存在时,则不执行该步骤;
warn					如果在ansible.cfg中存在告警,如果设定了False,不会警告此行。

命令格式

ansible [组群名] -m shell -a "shell命令"

例如,创建目录/查看

ansible testserver -m shll -a "mkdir test;ls /"

自动化运维工具Ansible基础部署与使用_第4张图片

Ⅱ、copy模块

# Ansible copy模块主要用于文件或者目录拷贝,支持文件、目录、权限、用户组功能,copy模块使用详解:

# 常用参数
src		 	 	Ansible端源文件或者目录,空文件夹不拷贝;
content		 	用来替代src,用于将指定文件的内容,拷贝到远程文件内;
dest			    客户端目标目录或者文件,需要绝对路径;
backup			# 拷贝之前,先备份远程节点上的原始文件;backup=yes
directory_mode	用于拷贝文件夹,新建的文件会被拷贝,而老旧的不会被拷贝;
follow			支持link文件拷贝;
force			覆盖远程主机不一致的内容;
group		 	设定远程主机文件夹的组名;
mode		 	指定远程主机文件及文件及的权限;
owner		 	设定远程主机文件夹的用户名,拥有者。

例如,将ansible主机上的文件复制到目标主机

ansible testserver -m copy -a "src=/test.txt dest=/ mode=755"

定义文件,目的位置和权限 

自动化运维工具Ansible基础部署与使用_第5张图片

Ⅲ、yum模块

#Ansible yum 模块主要用于软件的安装、升级、卸载,支持红帽.rpm软件的管理,YUM模块使用详解:
# 常用参数
conf_file					    设定远程yum执行时所依赖的yum配置文件
disable_gpg_check			    安装软件包之前是否坚持gpg  key;
name						    需要安装的软件名称,支持软件组安装;
update_cache				    安装软件前更新缓存;
enablerepo					    指定repo源名称;
skip_broken      			    跳过异常软件节点;
state						    #软件包状态,包括:installed、present、latest、absent、removed。

下载 、卸载

ansible testserver -m yum -a "name=httpd state=installed/removed"

Ⅳ、file模块 

# Ansible file模块主要用于对文件的创建、删除、修改、权限、属性的维护和管理,File模块使用详解:

# 常用参数介绍
src					   Ansible端源文件或者目录;
follow				   支持link文件拷贝;
force				   覆盖远程主机不一致的内容;
group				   设定远程主机文件夹的组名;
mode				   指定远程主机文件及文件及的权限;
owner				   设定远程主机文件夹的用户名;
path				   目标路径,也可以用dest,name代替;
state				  #状态包括:file、link、directory、hard、touch、absent;
attributes			   文件或者目录特殊属性。

创建文件或目录,可以指定文件/目录名、权限以及所属 

ansible testserver -m file -a "path=/opt/test.txt state=directory/touch 
mode=644 owner=paul "

Ⅴ、cron模块

# Ansible cron模块主要用于添加、删除、更新操作系统Crontab任务计划,Cron模块使用详解:

# 常用参数
name      					任务计划名称;
cron_file 					替换客户端该用户的任务计划的文件;
minute    					分( 0-59 ,* ,*/2 );
hour      					时( 0-23 ,* ,*/2 );
day       					日( 1-31 ,* ,*/2 );
month     					月( 1-12 ,* ,*/2 );
weekday   					周( 0-6 或 1-7 ,* );
job       					任何计划执行的命令,state要等于present;
backup    					是否备份之前的任务计划;
user      					新建任务计划的用户;
state     					指定任务计划present、absent。

例如:

一分钟一次的输出yes到test.txt中

ansible testserver -m cron -a "name='cornname' minute=1 job='/sbin/echo yes >> test.txt'"

Ⅵ、user模块

# Ansible user模块主要用于操作系统用户、组、权限、密码等操作,user模块使用详解:
system          				    默认创建为普通用户,为yes则创建系统用户;
append							    添加一个新的组;
comment 						    新增描述信息;
createhome 						    给用户创建家目录;
force							    用于删除强制删除用户;
group							    创建用户主组;
groups							    将用户加入组或者附属组添加;
home							    指定用户的家目录;
name							    表示状态,是否create、remove、modify;
password						    指定用户的密码,此处为加密密码;
remove							    删除用户;
shell							    设置用户的shell登录环境;
uid								    设置用户id;
update_password 				    修改用户密码;
state           				    用户状态,默认为present表示新建用户。absent表示删除

例如,创建一个mysql用户

ansible testserver -m user -a "name=mysql home=/usr/local/mysql 
shell=/sbin/nologin"

Ⅶ、service模块

# Ansible service模块主要用于远程客户端各种服务管理,包括启动、停止、重启、重新加载等,service模块使用详解:

# 常用参数
enabled				是否开启启动服务;
name				服务名称;
runlevel			    服务启动级别;
arguments			服务命令行参数传递;
state				    服务操作状态,状态包括started, stopped, restarted, reloaded。

与yum类似

例如,组群开启nginx服务,并加入开机自启

ansible testserver -m service -a "name=nginx.service state=started enabled=yes"

Ⅷ、synchronize

# Ansible synchronize模块主要用于目录、文件同步,基于Rsync命令同步目录,Synchronize模块使用详解:

# 常用参数
compress        			    开启压缩,默认为开启;
archive         				是否采用归档模式同步,保证源和目标文件属性一致;
checksum        			    是否效验;
dirs            				以非递归的方式传输目录;
links           				同步链接文件;
recursive       				是否递归yes/no;
rsync_opts      				使用rsync 的参数;
copy_links      				同步的时候是否复制连接;
delete          				删除源中没有而目标存在的文件;
src                          源目录及文件;
dest	        				目标目录及文件;
dest_port       				目标接受的端口;
rsync_path      				服务的路径,指定 rsync 命令来在远程服务器上运行;
rsync_timeout   				指定rsync操作的IP超时时间;
set_remote_user 			    设置远程用户名;
--exclude=.log  				忽略同步.log结尾的文件;
mode            			同步的模式,rsync同步的方式PUSH、PULL,默认都是推送push。

# 将本地/tmp 目录远程同步到 docker服务器上(增量同步)
ansible docker -m synchronize  -a 'src=/tmp/ dest=/tmp/'

# 完全同步
ansible docker -m synchronize  -a 'src=/tmp/ dest=/tmp/ delete=yes'

四、ansible剧本

通过Playbook任务,能够集中管理多个任务,将多个任务关联起来,从而实现更加复杂工作,满足生产环境的各个需求,提高运维人员管理服务器效率;Playbook剧本的产物YAML文件,类似XML接口(Tomcat)文件,内部有固定语法、参数等,要掌握常用的YAML语法编写,掌握满足运维管理方向的语法即可

运行剧本命令:ansible-playbook **.yaml
 

你可能感兴趣的:(运维,自动化,ansible)