在控制端里编写脚本,执行之前最好保存当前快照或者先使用测试环境,如果出现错误可以及时恢复!
在管理机上使用yum模块控制两台被管理机安装tree软件
ansible ceshiji -m yum -a 'name=tree state=installed'
验证安装
在管理机上使用yum模块控制两台被管理机卸载tree软件
ansible ceshiji -m yum -a 'name=tree state=absent'
验证卸载
下载ansible一个检查语法的工具
yum -y install search ansible-lint.noarch
模块以及yaml语法补充
通过 Ansible 提供的用于远程执行命令的 command、shell、raw、script 模块,我们可以将被管理节点的 IP/计算机名信息写入 Ansible 的“演员”inventory——/etc/ansbile/hosts,将要执行的命令编排成 Ansible 的 playbook,然后运行这个 playbook 就可以达到远程配置的目的了。
command、shell、raw、script 模块有什么区别呢?
command 和 shell 模块都依赖 Python 解析器,而 raw、script 这两个模块不依赖 Python,直接调用目标客户端的/bin/sh 来执行命令。如果目标客户端安装了 Python,而且要执行的命令很简单,不涉及特殊的 shell 符号,可以考虑 command 模块,如果涉及重定向等特殊 shell 符号则要用 shell 模块;如果目标客户端没有安装 Python,就只能考虑用 raw 或者script 模块,如果临时组装 shell 命令清单,则使用 raw 模块,如果在 Ansible 控制器上已经编写好 shell脚本文件,需要发送到客户端去执行,则应该使用 script 模块。
playbook 又是什么?
playbook字母意思是剧本,剧本里写清楚了哪个演员什么时候应该说什么台词、做什么动作、展现什么神情等,电影、电视剧是按照剧本来拍摄的。Ansible 里的 playbook 作用就跟拍电影的剧本一样,把要执行的命令、任务在 playbook 里编排好,然后 Ansible 执行这个 playbook,Ansible的“电影”就这样“拍摄”完成了。由此可见,掌握 playbook 的编排对于掌握 Ansible 的应用有多重要!电影剧本有分幕、场(景)、镜等结构,Ansible 的 playbook 也分结构,类似于:
playbook #相当于总剧本
|----play #相当于场景剧本
|----tasks #相当于分镜头剧本
|----pre_tasks #相当于拍摄前准备工作:布置场景,演员化妆等,执行环境的准备
|----tasks #相当于开始拍摄,要执行的命令清单
|----post_tasks #相当于拍摄完清场工作:撤换场景,演员卸/换妆等,执行环境的清理
关于更多的语法信息可以参考文档:
https://docs.ansible.com/ansible/latest/reference_appendices/YAMLSyntax.html
YAML 1.1:https://yaml.org/spec/1.1/
YAML 1.2:https://yaml.org/spec/1.2/spec.html
Ansible playbook 的样例:https://github.com/ansible/ansible-examples
https://blog.csdn.net/qq_51625703/article/details/124364414
Command 模块
功能:在远程主机执行命令,此为默认模块,可忽略-m选项
注意:此命令不支持 $VARNAME < > | ; & 等,用shell模块实现
Script模块
功能:在远程主机上运行ansible服务器上的脚本
大家可以去网上多搜集一些资料共同学习,缺乏机器练手的小伙伴可以去 cnaaa 看一看!