1.Ansible安装Ansible的安装方式主要有以下三种:1.yum使用EPEL源安装$mv/etc/yum.repos.d/epel.repo/etc/yum.repos.d/epel.repo.backup$mv/etc/yum.repos.d/epel-testing.repo/etc/yum.repos.d/epel-testing.repo.backup$wget-O/etc/yum.repos.d/epel.repohttps://mirrors.aliyun.com/repo/epel-7.repo$yumcleanall&&yummakecache#可以使用以下三种方式查看ansible包信息$yuminfoansible$yumlistansible$yumlist|grepansibleansible.noarch2.9.27-1.el7epelansible-collection-microsoft-sql.noarch1.1.0-1.el8AppStreamansible-collection-redhat-rhel_mgmt.noarch1.0.0-2.el8AppStreamansible-doc.noarch2.9。27-1.el7epelansible-freeipa.noarch0.3.8-1.el8AppStreamansible-freeipa-tests.noarch0.3.8-1.el8AppStreamansible-inventory-grapher.noarch2.4.4-1.el7epelansible-lint.noarch3.5.1-1.el7epelansible-openstack-modules.noarch0-20140902git79d751a.el7epelansible-pcp.noarch2.2.1-1.el8AppStreamansible-python3.noarch2.9.27-1.el7epelansible-review.noarch0.13.4-1.el7epelansible-test.noarch2.9.27-1.el7epelcentos-release-ansible-29.noarch1-2.el8extraskubernetes-ansible.noarch0.6.0-0.1.gitd65ebd5.el7epelpython2-ansible-runner.noarch1.0.1-1.el7epelpython2-ansible-tower-cli.noarch3.3.9-1.el7epelvim-ansible.noarch3.2-1.el7#安ensible$yum-y安装ansible$ansible--version2先决条件$yum-并安装python-jinja2PyYAMLpython-paramikopython-babelpython-crypto#免费下载Pythonenable(略)$wgethttps://releases.ansible.com/ansible/ansible-2.9.27.tar.gz$tarxfansible-2.9.27.tar.gz$cdansible-2.9.27$ls-total160drwxr-xr-x2rootroot4096May2505:18bindrwxr-xr-x2rootroot4096May2505:18changelogsdrwxr-xr-x;x3rootroot4096May2505:18contrib-rw-r--r--1rootroot35148May2505:18COPYINGdrwxr-xr-x6rootroot4096May2505:18docsdrwxr-xr-x3rootroot4096May2505:18examplesdrwxr-xr-x3rootrootroot4096May2505:18hackingdrwxr-xr-x3rootroot4096May2505:18libdrwxr-xr-x2rootroot40965月25日05:18许可证-rw-r--r--1rootroot13840May2505:18Makefile-rw-r--r--1rootroot1731May2505:18MANIFEST.indrwxr-xr-x10rootroot4096May2505:18packaging-rw-r--r--1rootroot7724May2505:18PKG-INFO-rw-r--r--1rootroot5175May2505:18README.rst-rw-r--r--1根根3515月25日05:18requirements.txt-rw-r--r--1rootroot12949May2505:18setup.py-rw-r--r--1rootroot28352May2505:18SYMLINK_CACHE.jsondrwxr-xr-x7rootroot4096May2505:18test$pythonsetup.pybuild$pythonsetup.pyinstall$mkdir/etc/ansible$cp-rexamples/*/etc/ansible3、Git源码安装$gitclonehttps://github.com/ansible/ansible.git$cdansible$gitcheckoutstable-2.9更新文件:100%(19674/19674),done.Branch'stable-2.9'setuptotrackremotebranch'stable-2.9'from'origin'.切换到新分支'stable-2.9'$source./hacking/env-setup4、pipinstall$yuminstallpython-pippython-devel$yuminstallgccglibc-develzibl-develrpm-bulidopenss1-devel$pipinstall-Upip$pipinstallansible--upgrade二、ansible相关文件说明1、配置文件/etc/ansible/ansible.cfg:主配置文件,配置ansible工作特性;/etc/ansible/hosts:主机列表文件,管理的目标主机地址列表;/etc/ansible/roles/:存放角色的目录2.主要配置文件介绍#临时py命令文件存放在远程主机目录#local_tmp=$HOME/.ansible/tmp#本地临时命令执行目录#forks=5#默认并发#sudo_user=root#默认sudo用户#ask_sudo_pass=True#执行每次ansible命令是否询问ssh密码#ask_pass=True#是否询问密码#remote_port=22#默认远程登录端口host_key_checking=False#查看对应服务器的host_key,建议取消注释log_path=/var/log/ansible.log#日志文件,建议启用#module_name=command#默认模块可以修改为shell模块。以上只是默认配置的一小部分,还有其他的配置没有在这里一一列举。因为ansible的大部分参数都可以保持默认不变。但当托管机器数量增加时,建议适当调整分叉数量。温馨提示:由于Ansible不是服务,所以更改配置后无需重启(不提供重启的操作方法),更改配置后配置会立即生效。3、清查主机列表文件主机列表文件,通俗地说,就是将一组或多组受控节点集成在一个文件中。默认情况下,列表文件是:/etc/ansible/hosts,通常我们可能会根据项目需求起一个熟悉的名字,或者直接在我们需要整理的每组项目的根目录下存放一个hosts列表文件。可以有多个Inventory主机清单文件。使用plyabook时,可以通过-i参数手动指定需要使用的清单文件名。Inventory文件沿用ini配置文件的风格,一个section代表属于同一组的一组被管理机器。目标被管节点默认被视为使用SSH的22端口,但当部分节点使用22以外的端口号时,也可以在manifest文件中指定。被管节点可以IP形式写入列表文件,也可以域名形式写入。[站点]172.16.0.10172.16.0.11[appsrvs]192.168.66.[1:30][nginx]nginx1.ayunw.cnnginx2.ayunw.cn[apache]apache1.ayunw.cn:2333apache2.ayunw.cn[nginxsrvs]]nginx[10:20].ayunw.cn[dbservers]redis1.ayunw.cnredis2.ayunw.cn[dbsrvs]mysql-[a:z].ayunw.cn三、实战练习一、环境介绍这里我包括ansible主控机和另外两台托管机。[root@ansible-server~]#cat/etc/ansible/hosts[webservers]192.168.66.[151:153][dbservers]192.168.66.151[appservers]192.168.66.[152:153]2.Ansible相关命令工具/usr/bin/ansible。/usr/bin/ansible-doc:查看配置文件,模块功能查看工具。/us/bin/ansible-galaxy:自网络平台,用于下载/上传优秀代码或Roles模块。/usr/bin/ansible-playbook:自定义自动化任务和编排剧本工具。/usr/bin/ansible-pull:远程执行命令的工具。/usr/bin/ansible-vault:文件加密工具。/usr/bin/ansible-console:基于Console界面与用户交互的执行工具。以上命令,最常用的两个:ansible和ansible-playbook,这两个命令是ansible实现批量管理的关键。Ansible命令通常用于一次性或临时任务,一般一条命令即可完成任务。通常我们称这种方法为:ad-hoc;ansible-playbook主要用于大型项目的部署,需要和多个yaml格式的文件(以yaml或yml结尾)结合使用,所以一般需要提前规划好目录,集成yaml文件。接下来,我们将介绍一些比较常用的命令。(1)ansible-doc该命令主要用于显示某个模块的使用帮助信息。如果忘记了模块或者模块的用法,可以使用这个命令快速查看。ansible-doc[options][module...]#列出可用模块-l,--list#显示指定模块的playbook片段-s,--snippet如:#列出所有模块ansible-doc-l#查看指定模块帮助使用ansible-doccopy#查看指定模块帮助使用【简化版帮助】ansible-doc-scopy注意:在使用ansible批量管理操作之前,需要对所有主机进行免密码认证确保每个被管节点都可以在ansible管理节点上通过ssh协议免密登录被管节点。免密码的三种实现方式:基于ssh-keygen+shell+sshpass`基于expect的方法;基于ansible-playbook。ad-hoc模式常用参数说明:--version-mmodule-V--list-hosts-k,--ask-pass-C,--check-T,--timeout=TIMEOUT-u,--user=REMOTE_USER:执行远程执行的用户-b,--become--become-user=USERNAME:指定sudo的runas用户,默认为root-K,--ask-become-passwildcardansible"*"-mpingansible192.168.1.*-mpingansible"srvs"-mping[root@ansible-server~]#ansible"*"--list-hostshosts(3):192.168.66.151192.168.66.152192.168.66.153logicoransible"websrvs:appsrvs"-mpingansible"192.168.66.151:192.168.66.152"-mpinglogicand#Hostsinthewebsrvsgroupandinthedbsrvsgroupansible"webservers:&dbservers"-mping192.168.66.151|SUCCESS=>{"ansible_facts":{"discovered_interpreter_python":"/usr/bin/python"},"changed":false,"ping":"pong"}逻辑非#主机在websrvs组中但不在dbsrvsgroup#注意:这里是单引号ansible'webservers:!dbservers'-mpingregularansible"webservers:&dbservers"-mpingansible"~(web|db)servers"-mping(2)ansible执行命令过程加载自己的配置文件默认是/etc/ansible/ansible.cfg。如果您指定您的自定义清单文件,您将从您自己的清单文件中找到托管主机。加载自己对应的模块文件,如:comMand通过ansible为模块或命令生成对应的临时py文件,并将该文件传递给远程服务器对应的执行用户$HOME/.ansible/tmp/ansible-tmp-number/XXX.PY文件。给文件+x来执行。执行并返回结果。删除临时py文件并退出。可以通过加参数-v或-vvv(可以多加几个v参数)列出详细的执行过程。[root@ansible-server~]#ansible"~(web|db)servers"-vvv-mping>ansible.log[root@ansible-server~]#grep"chmod"ansible.log(3)ansible执行后颜色说明默认为以下三种颜色:绿色:表示成功。黄色:远程文件已修改并执行成功。红色:表示执行失败。但是颜色可以在ansible配置文件中定义,如下:[root@ansible-server~]#vim/etc/ansible/ansible.cfg[colors]#highlight=white#verbose=blue#warn=brightpurple#error=red#debug=darkgray#deprecate=purple#skip=cyan#unreachable=red#ok=green#changed=yellow#diff_add=green#diff_remove=red#diff_lines=cyan(4)Ansible-playbook示例[root@ansible-server~]#catecho-demo.yml----hosts:allremote_user:roottasks:-name:echodemocommand:echo“第一个ansible-playbook示例”[root@ansible-server~]#ansible-playbookecho-demo.yml(5)ansible-vault这个工具是用来加解密yaml文件的,格式如下:ansible-vault[create|decrypt|edit|encrypt|rekey|view]如:ansible-vaultencryptecho-demo.yml#加密ansible-vaultviewecho-demo.yml#查看ansible-vaultdecryptecho-demo.yml#解密ansible-vaulteditecho-demo.yml#编辑加密文件ansible-vaultcreateecho-demo.yml#创建新文件ansible是一个简单、高效、强大的工具,它的功能远不止于此。而那些不常用的命令工具本文就不介绍了。
