自动化运维工具 Ansible 日常维护和使用.docx
《自动化运维工具 Ansible 日常维护和使用.docx》由会员分享,可在线阅读,更多相关《自动化运维工具 Ansible 日常维护和使用.docx(12页珍藏版)》请在课桌文档上搜索。
1、Inventory文件在日常维护中,AnSibIe通过Inventory(可管理的主机集合),对远端服务器或者主机进行统一操作和管理.在Ansible中,描述主机的默认方法是将他们列在一个文本文件中,这个文件称为InVentory文件,默认的路径和文件为:etcansiblehosts,可以通过ANSIB1.E.HOSTS环境变量来指定,也可以在ansible.cfg文件中通过inventory参数指定,或者在运行ansible和ansible-playbook的时候使用-i参数来临时指定。下面举例说明,如何在inventory组件的etcansiblehosts文件中定义主机和主机组:1 X
2、.X.X.100ansible_ssh_PaSS=123456,2 groupame13 X.X.X.101:94 X.X.X.201:95 groupame1:vars6 ansible_ssh_pass=*123456,7 groupname2:children8 groupame1第一行定义了一个主机XXX100,并使用inventory内置变量ansible_ssh_pass定义了该主机的登录密码,如果建立了互信,则不需要这个参数;参数用途HnSibIe_ssh_host定义hostSSh地址ansible_ssh_port定义hostsssh端口ansible_ssh_user定义h
3、ostsSSh认证用户ansib1JSSh_pass定义hostsSSh认证密码ansible_sudo定义hostsSUdO用户asible_sudo_pass定义hoslsSUdO密码ansible_sudoexe定义hostssudo路径ansible_connection定义hosts连接方式ansible_ssh_private_key_fiIe定义hosts私物ansible_shell_type定义hostsshell类型ansible_PythOnjnterPreter定义hosts任务执行python路径ansibIe_*_inlerpreter定义hosts其他语言解析器路
4、径我们也可以在ansible.cfg文件中的defaults部分更改一些Inventory内置参数的默认值,可以支持更改的有:Inventory内置参数ansible.cfg参数HnSibleSShPOrtremoteportHnSible_sshuserremote_usera11siblesshprivatekeyfileprivate_key_fiIeansible-shell_typoexecutable动态Inventory在实际的应用中,会存在大量的主机列表信息,如果手动维护Ansible中的Inventory文件将会非常的繁琐所以支持动态Inventory将会让问题变得统一、清淅
5、、简单许多.动态InVentory也就是AnSible所有的InVentory文件里面的主机列表和变量信息都支持从外部拉取,例如我们常用的CMDB,我们可以通过定义的脚本,将外部CMDB等其他运维系统中的主机信息同步至Ansible中.在ansibleip-mcommand-adate-o值得注意的是,Ansible默认的模块是Command,所以上面的命令可以简化为:ansibleip-adate-o第二种方式是利用Shell模块切换到某个Shell执行远程主机上的Shell/Python脚本,或者执行命令,Shell支持管道命令,功能较Command更强大灵活,例如:ansibleip-m
6、shell-abashroottest.sh,-oansibleip-mshell-aecho123456,passwd-stdinroot第三种方式是利用RaW模块Raw支持管道命令.Raw有很多地方和SheIl类似,但是如果是使用老版本Python(低于2.4),无法通过Ansible的其他模块执行命令,则需要先用到Raw模块远程安装PythOn-Sim-PlejSon后才能受管;又或者是受管端是路由设备,因为没有安装Python环境,那就更需要使用RaW模块去管控了.例如:ansibleip-mraw-a,cd/tmp;pwd-第四种方式是利用SCriPt模块,传输Ansible中控端上
7、的Shell/Python脚本到远端主机上执行,即使远端主机没有安装Python也可以执行,有点类似RaW模块.但Script只能执行脚本,不能调用其他指令,且不支持管道命令,例如:ansibleip-mscript-aroottest.sh-o在AnsibleAd-Hoc中,可以通过User模块帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作.该模块的几个常用参数如下:参数说明name用J指定要操作的用户名称group用Ffii定用户所在的主组ho11H用于指定用户home目录shell用于指定用户的默认shelluid用指定用户的Uid号state用指
8、定用户是否存在于远程主机中欣认为PreSen1.表示用户需存在;absent.表示IH除用户re三oveSUtle为absent时,用于指定是否副除用户的在目录assword用于指定用户的密码增加用户、组和密码:ansibleip-mgroup-a,name=testgansibleip-muser-aname=testgroup=testgpassword=123456home=hometest*删除用户和用户主目录:ansibleip-muser-a*name=testState=absentremove=yes*3、AnsiblePlaybook使用在AnsibleAd-Hoc中,可以通
9、过Yum模块实现在远程主机上通过YUm源管理软件包,包括安装、升级、降级、删除和列出软件包等。该模块的几个常用参数如下:Tasks1.ist和ActionPlay的主体部分是Task列表,Task列表中的各任务按次序逐个在Hosts中指定的主机上执行,即在所有主机上完成第一个任务后再开始第二个任务.在运行Playbook时(从上到下执行),如果一个Host执行Task失败,整个Task都会回滚,我们需要修正Playbook中的错误,然后至新执行即可.Task的目的是使用指定的参数执行模块,而在模块参数中可以使用变量,模块执行时日等等,这意味着多次执行是安全的,因为其结果一致.另外,按照规范写法
10、,每一个Task必须有一个名称Name,虽然这不是必须的,但这样在运行Playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个Task.如果没有定义Name,Action的值将会用作输出信息中标记特定的Task,结果不好分辨。定义一个Task,常见的格式为module:options.例如:yum:name=httpd.值得注意的是,Ansible的自带模块中,Command模块和Shell模块无需使用key=value格式,直接编写要执行的命令即可.HandlersHandlers也是一些Task的列表,和一般的Task并没有什么区别。它是由通知者进行的Notify,如果没有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动化运维工具 Ansible 日常维护和使用 自动化 工具 日常 维护 使用

链接地址:https://www.desk33.com/p-1491552.html