ansible常见模块
setup
# 收集远程主机的Facts(每个被管理节点在接收运行管理命令之前,会将自己主机相关信息,如操作系统,IP等信息传递给ansible主机)
filter: 用于进行条件过滤,如果设置,仅返回匹配过滤条件的信息
ansible hosts1 -m setup
ansible hosts1 -m setup -a "filter=ansible_all_ipv4_addresses"
command
# 命令模块,用于在远程主机执行命令(缺陷:执行命令不能使用变量和参数)
例:在inventory文件中的所有主机中执行date命令,-m默认不指定时就是使用command模块
ansible all -m command -a "date"
cron
# 定时任务模块
state值: present(添加) absent(移除)
例: 使用ansible 添加任务计划 */10 * * * * /bin/echo hello
添加:
ansible all -m cron -a 'minute="*/10" job="/bin/echo hello" name="test job" state=present'
检查:
ansible all -a 'crontab -l'
移除:
ansible all -m cron -a 'minute="*/10" job="/bin/echo hello" name="test job" state=absent'
user
# 用户操作模块
name: 指定用户名
uid: 指定uid号
group: 指定组
添加用户
ansible all -m user -a 'name="user1" state=present'
删除用户
ansible all -m user -a 'name="user1" state=absent'
group
添加用户组
ansible all -m group -a 'name="mysql" gid=306 system=yes'
copy
src= :定义本地源文件
dest=:定义目标路劲(绝对路劲)
content= :取代src=,表示用指定的内容生成为目标文件的内容,不能与src同时使用
owner: 文件属主
group: 文件属组
mode: 文件权限
backup: 是否备份
拷贝本地的/etc/fstab 到远程的 /tmp 下权限为640 属主为root
ansible all -m copy -a 'src=/etc/fstab /dest=/tmp/fstab.ansible owner=root mode=640'
拷贝内容为“hello longge”到远程主机
ansible all -m copy -a 'content="hello longge" dest=/tmp/test.ansible'
file
# file 模块可以帮助我们完成一些对文件的基本操作。比如,创建文件或目录、删除文件或目录、修改文件权限等
path: 必须参数,指定要操作的文件或目录
state: directory目录 touch文件 link软链接 hard硬链接 absent删除
src: 创建链接时需要指定的源
force: 强制
owner: 文件属主
group: 文件属组
mode: 文件权限
recurse: 目录时递归修改文件属性
ping
# 测试连通性
ansible all -m ping
service:
# 服务管理
state: started stopped reloaded restarted
enabled: 是否开机自启
ansible all -m service -a 'enabled=true name=httpd state=started'
shell
与command类似,但是可以执行带管道和变量的命令,同样无法做到运行多次结果一致
script
# 本地脚本在远程主机执行
chdir参数 : 此参数的作用就是指定一个远程主机中的目录,在执行对应的脚本之前,会先进入到 chdir 参数指定的目录中。
creates参数 :使用此参数指定一个远程主机中的文件,当指定的文件存在时,就不执行对应脚本,可参考 command 模块中的解释。
removes参数 :使用此参数指定一个远程主机中的文件,当指定的文件不存在时,就不执行对应脚本
ansible all -m script -a 'chdir=/opt /tmp/test.sh'
yum
# 软件包管理
state值: present(安装) absent(移除)
安装软件包
ansible all -m yum -a 'name=nginx'
卸载
ansible all -m yum -a 'name=nginx state=absent'
lineinfile
# 文件内容修改,在某行前面添加一行,在某行后面添加一行,删除某一行、末尾加入一行、替换或添加某一行
path: 文件路径
regexp: 正则匹配,如'^127\.0\.0\.1','^Listen ','^# port for http'
line: 需要更换成的行或者添加的行
insertbefore: 正则匹配该行并在改行前面添加一行,如'^www.*80/tcp','^#Listen ','aa(.*)'
insertafter: 正则匹配该行并在改行后面添加一行
state: absent删除 present添加
例:
bbb修改为bbbbbb
ansible all -m lineinfile -a "dest=/root/test.txt regexp='bbb' line='bbbbbbb'"
2.2 在某一行前面插入一行
ansible all -m lineinfile -a "dest=/root/test.txt insertbefore='aa(.*)' line='eeee'"
2.3 在某一行后面插入一行
ansible all -m lineinfile -a "dest=/root/test.txt insertafter='aa(.*)' line='eeee'"
2.4 删除某一行
ansible all -m lineinfile -a "dest=/root/test.txt regexp='aa(.*)' state=absent"
2.5 末尾加入一行
ansible all -m lineinfile -a "dest=/root/test.txt line='hehe'"
2.6 替换或添加某一行
ansible all -m lineinfile -a "dest=/root/test.txt regexp='he(.*)' line='lllll' state=present"
replace
# 模块可以根据我们指定的正则表达式替换匹配到的字符串,文件中所有被匹配到的字符串都会被替换,和lineinfile不同的地方是replace只会替换正则表达式匹配到的内容,而lineinfile是替换正则表达式匹配到行的内容。
path: /etc/hosts
after: '开始位置'
before: '结束位置'
regexp: '匹配内容'
replace: '替换内容'
#匹配某行前加入注释
ansible host01 -m replace -a "path=/etc/fstab regexp='^10.1.2.254(.*)' replace='# 10.1.2.254\1' backup=yes"
# 匹配到行后,在本行添加aaa内容
ansible 192.168.1.1 -m replace -a "path=/etc/ssh/sshd_config regexp='^allowusers(.*)' replace='allowusers\1 aaa' backup=yes"
# 删除行中的test01
ansible host02 -m replace -a "dest=/etc/ssh/sshd_config regexp='test01' replace=''"
标签:文件,常用,dest,state,ansible,模块,test,添加
From: https://www.cnblogs.com/kkit/p/18336095