自动化运维工具Ansible详细部署Word文件下载.docx
- 文档编号:18933201
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:14
- 大小:622.52KB
自动化运维工具Ansible详细部署Word文件下载.docx
《自动化运维工具Ansible详细部署Word文件下载.docx》由会员分享,可在线阅读,更多相关《自动化运维工具Ansible详细部署Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
(6)、strongmulti-tiersolution:
可实现多级指挥。
4、优点
(1)、轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可;
(2)、批量任务执行可以写成脚本,而且不用分发到远程就可以执行;
(3)、使用python编写,维护更简单,ruby语法过于复杂;
(4)、支持sudo。
5、任务执行流程
说明:
(1)、以上内容大多是基于他人分享的基础上总结而来,学习借鉴之用;
(2)、本次安装基于CentOS6.4
系统环境。
二、Ansible基础安装与配置
1、Ansible基础安装
(1)、python2.7安装
https:
//www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
#tarxvzfPython-2.7.8.tgz
#cdPython-2.7.8
#./configure--prefix=/usr/local
#make--jobs=`grepprocessor/proc/cpuinfo|wc-l`
#makeinstall
##
将python头文件拷贝到标准目录,以避免编译ansible时,找不到所需的头文件
#cd/usr/local/include/python2.7
#cp-a./*/usr/local/include/
备份旧版本的python,并符号链接新版本的python
#cd/usr/bin
#mvpythonpython2.6
#ln-s/usr/local/bin/python
#ln-s/usr/local/python/bin/python./python
修改yum脚本,使其指向旧版本的python,已避免其无法运行
#vim/usr/bin/yum
#!
/usr/bin/python
-->
#!
/usr/bin/python2.6
(2)、setuptools模块安装
//pypi.python.org/packages/source/s/setuptools/setuptools-7.0.tar.gz
--no-check-certificate
#tarxvzfsetuptools-7.0.tar.gz
#cdsetuptools-7.0
#pythonsetup.pyinstall
(3)、pycrypto模块安装
//pypi.python.org/packages/source/p/pycrypto/pycrypto-2.6.1.tar.gz
#tarxvzfpycrypto-2.6.1.tar.gz
#cdpycrypto-2.6.1
(4)、PyYAML模块安装
http:
//pyyaml.org/download/libyaml/yaml-0.1.5.tar.gz
#tarxvzfyaml-0.1.5.tar.gz
#cdyaml-0.1.5
//pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz
--no-check-certificate
#tarxvzfPyYAML-3.11.tar.gz
#cdPyYAML-3.11
(5)、Jinja2模块安装
//pypi.python.org/packages/source/M/MarkupSafe/MarkupSafe-0.9.3.tar.gz
#tarxvzfMarkupSafe-0.9.3.tar.gz
#cdMarkupSafe-0.9.3
//pypi.python.org/packages/source/J/Jinja2/Jinja2-2.7.3.tar.gz
#tarxvzfJinja2-2.7.3.tar.gz
#cdJinja2-2.7.3
(6)、paramiko模块安装
//pypi.python.org/packages/source/e/ecdsa/ecdsa-0.11.tar.gz
#tarxvzfecdsa-0.11.tar.gz
#cdecdsa-0.11
//pypi.python.org/packages/source/p/paramiko/paramiko-1.15.1.tar.gz
#tarxvzfparamiko-1.15.1.tar.gz
#cdparamiko-1.15.1
(7)、simplejson模块安装
//pypi.python.org/packages/source/s/simplejson/simplejson-3.6.5.tar.gz
#tarxvzfsimplejson-3.6.5.tar.gz
#cdsimplejson-3.6.5
(8)、ansible安装
#tarxvzfansible-1.7.2.tar.gz
#cdansible-1.7.2
2、Ansible配置
(1)、SSH免密钥登录设置
生成公钥/私钥
#ssh-copy-id-i~/.ssh/id_rsa.pub"
-p22612
youboy@192.168.5.132"
youboy@192.168.5.133"
(2)、ansible配置
#mkdir-p/etc/ansible
将前面解压出来的ansible里面的example中的cfg文件以及hosts文件拷贝到/etc/ansible/,;
我们是禁止root用户直接登录的,因此要将/etc/ansible/拥有者和属主都改成youboy用户;
#vim/etc/ansible/ansible.cfg
……
remote_port=22612
private_key_file=/home/youboy/.ssh/id_rsa.pub
主机组定义
#vim/etc/ansible/hosts
[test_cluster]
192.168.5.132
192.168.5.133
(3)、简单测试
[youboy@131
ansible]$./bin/ansibletest_cluster-mcommand-a'
uptime'
192.168.5.133|success|rc=0>
>
23:
38:
50up4:
10,1user,loadaverage:
0.00,0.01,0.00
192.168.5.132|success|rc=0>
51up4:
0.00,0.00,0.00
第一次运行时,需要输入一下“yes”【进行公钥验证】,后续无需再次输入。
3、常用模块使用
(1)、setup
用来查看远程主机的一些基本信息
ansible]$./bin/ansibletest_cluster-msetup
(2)、ping
用来测试远程主机的运行状态
ansible]$./bin/ansibletest_cluster-mping
(3)、file
设置文件的属性
相关选项如下:
force:
需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;
另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:
yes|no
group:
定义文件/目录的属组
mode:
定义文件/目录的权限
owner:
定义文件/目录的属主
path:
必选项,定义文件/目录的路径
recurse:
递归设置文件的属性,只对目录有效
src:
被链接的源文件路径,只应用于state=link的情况
dest:
被链接到的路径,只应用于state=link的情况
state:
directory:
如果目录不存在,就创建目录
file:
即使文件不存在,也不会被创建
link:
创建软链接
hard:
创建硬链接
touch:
如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:
删除目录、文件或者取消链接文件
示例:
远程文件符号链接创建
ansible]$./bin/ansibletest_cluster-mfile-a"
src=/etc/resolv.confdest=/tmp/resolv.confstate=link"
远程文件信息查看
ansible]$./bin/ansibletest_cluster-mcommand-a"
ls-la/tmp/resolv.conf"
远程文件符号链接删除
path=/tmp/resolv.confstate=absent"
#ansiblestorm_cluster-mcommand-a"
ls-al/tmp/resolv.conf"
如上显示,代表文件或链接已经删除。
(4)、copy
需要在客户端安装selinux包
yuminstall-ylibselinux-python
复制文件到远程主机
backup:
在覆盖之前,将源文件备份,备份文件包含时间信息。
有两个选项:
content:
用于替代“src”,可以直接设定指定文件的值
必选项。
要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录
directory_mode:
递归设定目录的权限,默认为系统默认权限
如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。
默认为yes
others:
所有的file模块里的选项都可以在这里使用
被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。
如果路径是一个目录,它将递归复制。
在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。
将本地文件“/etc/ansible/ansible.cfg”复制到远程服务器
ansible]$./bin/ansibletest_cluster-mcopy-a"
src=/etc/ansible/ansible.cfgdest=/tmp/ansible.cfgowner=youboygroup=youboymode=0644"
ls-la/tmp/ansible.cfg"
(5)、command(不支持管道)
在远程主机上执行命令
creates:
一个文件名,当该文件存在,则该命令不执行
free_form:
要执行的linux指令
chdir:
在执行指令之前,先切换到该目录
removes:
一个文件名,当该文件不存在,则该选项不执行
executable:
切换shell来执行指令,该执行路径必须是一个绝对路径
uptime"
mkdir/home/youboy/test123-p"
(6)、shell
切换到某个shell执行指定的指令,参数与command相同。
与command不同的是,此模块可以支持命令管道,同时还有另一个模块也具备此功能:
raw
先在本地创建一个SHELL脚本
ansible]$cat/tmp/test.sh
/bin/bash
echo`date+%F_%H:
%M:
%S`>
/home/youboy/test123/test.txt
ansible]$chmod+x/tmp/test.sh
将创建的脚本文件分发到远程
src=/tmp/test.shdest=/tmp/test.showner=youboygroup=youboymode=0755"
远程执行
ansible]$./bin/ansibletest_cluster-mshell-a"
/tmp/test.sh"
(7)、更多模块
其他常用模块,比如:
service、cron、yum、synchronize就不一一例举,可以结合自身的系统环境进行测试。
service:
系统服务管理
cron:
计划任务管理
yum:
yum软件包安装管理
synchronize:
使用rsync同步文件
user:
系统用户管理
系统用户组管理
更多模块可以参考:
#ansible-doc–l
(国内的一个镜像站点,避免被墙
^_^)
(8)、一些概念补充
playbook的组成:
playbook是由一个或多个“play”组成的列表,可以让它们联同起来按事先编排的机制执行;
所谓task无非是调用ansible的一个module,而在模块参数中可以使用变量;
模块执行是幂等的,这意味着多次执行是安全的,因为其结果均一致;
执行模型:
tasklist中的各任务按次序逐个在hosts中指定的所有主机上执行,即在所有主机上完成第一个任务后再开始第二个。
在顺序运行某playbook时,如果中途发生错误,所有已执行任务都将回滚,因此,在修改playbook后重新执行一次即可;
task组成:
每个task都应该有其name,用于playbook的执行结果输出,建议其内容尽可能清晰地描述任务执行步骤。
如果未提供name,则action的结果将用于输出;
notify指定handler的执行机制:
“notify”这个action可用于在每个play的最后被触发,在notify中列出的操作称为handler,仅在所有的变化发生完成后一次性地执行指定操作。
三、后续工作
1、深入学习ansible的playbook以及扩展模块;
2、
结合业务环境,初步实现基础监控,以取代目前调用自动化部署平台API的方式;
3、
尝试自动化运维工具saltstack,并将其与ansible进行对比。
一些学习资料:
//blog.xiaorui.cc/category/ansible/
本文出自“人生理想在于坚持不懈”博客,请务必保留此出处
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动化 工具 Ansible 详细 部署