ansible基于pythob开发
Ansible;python;Agentless。中小型应用环境
Saltstack;python 一般需要部署agent,执行效率高。
Puppet:ruby功能强大,配置复杂,重型,适合大型环境
一个系统去控制多台主机
/etc/ansible/ansible.cfg主配置文件,配置ansible工作特性
/etc/ansible/host 主机清单
/etc/ansible/roles/存放角色的目录
/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy 下载/上传优秀代码
/usr/bin/ansible-playbook定制自动化任务,编排剧本工具/usr/bin/ansible-pull远程执行命令
/usr/bin/ansible-console基于console界面与用户交互的执行工具
第一次连接需要加入ssh
cd .ssh
ssh 主机ip
ansible-doc帮助命令
-a显示所有模块文档
-l,–list 列出可用模块
-s,–snippet显示出指定的playbook片段
实例
ansible-doc -l 列出所有模块
ansible-doc ping 查看指定帮助文档
ansible-doc -s ping 查看指定帮助文档用法
ansible [-m module_name][-a args]
-- version 显示版本
-m 指定模块
-v 详细过程
-k 提示输入ssh连接密码,默认key验证
-K 提示输入sudo时口令
-C 检查,并不执行
ansible 主机 --list-host:显示主机列表,简写-list
-u 指定用户连接
all:匹配所有主机列表里的主机
*:通配符
ansible “*” -m ping
ansible 192.168.1.* -m ping
:是或的关系
:&并且 需要加引号
逻辑非:我:!你 执行我,而不执行你
正则表达
ansible all -m script -a ‘/root/ansible/host.sh’
ansible all -m copy -a ‘ content=“hello\生成文件” src=/root/源 dest=指定地点 mode=000权限 owner=所有者’
copy:从服务器复制到客户端
fetch:从客户端提取文件到服务端,copy相反,目录可先tar
ansible all -m fetch -a‘src=被控制段文件 dest=本机目录’
创建文件ansible all -m file -a‘name=/data/fa3 state=touch’
查看 ansible all -a ‘ls -l /data ‘
删除 ansible -all -m file -a ‘name=/data state=absent ’
创建文件夹 ansible all -m file -a ’name=/date/dir state=directory ‘
创建软链接 ansible all -m file -a ’src=/etc/fstab dest=/data/fstab.link state=link‘
删除软连接 ansible all -m file -a ’dest=/data/fstab.link state=absent‘
command:查看文件 ansible all -m command -a ’cat/data/f2‘
shell 模块可以帮助我们在远程主机上执行命令。与 command 模块不同的是,shell 模块在远程主机中执行命令时,会经过远程主机上的 /bin/sh
程序处理。
**free_form参数 :**必须参数,指定需要远程执行的命令,但是并没有具体的一个参数名叫free_form
,具体解释参考 command 模块。
chdir参数 : 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到 chdir 参数指定的目录中。
**creates参数 :**使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command 模块中的解释。
**removes参数 :**使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考 command 模块中的解释。
**executable参数:**默认情况下,shell 模块会调用远程主机中的 /bin/sh
去执行对应的命令,通常情况下,远程主机中的默认 shell 都是 bash。如果你想要使用其他类型的 shell 执行命令,则可以使用此参数指定某种类型的 shell 去执行对应的命令。指定 shell 文件时,需要使用绝对路径。
支持时间:minute,hour,day,month,weekday
name=Synctime 删除任务
使用yaml编写
Hosts 执行的远程主机列表
Tasks 任务集
Varniables 内置变量或自定义变量在playbook中调用
Templates 模板,可替代模板文件中的变量并实现一些简单的逻辑的文件
Handlers 和notit结合使用,由特定条件触发的操作,满足条件方可执行,否则不执行
tags标签