ansible 常用模块总结

模块的使用方式

命令行使用方式

ansible [host] -m 命令模块 -a "命令参数"

playbooks使用方式

playbooks 提供两种方式进行参数的表达

---
...
...
tasks:
- name: copy_module
  copy:
	src:
	dest:
	...
	
---
tasks:
- name: copy_module
  copy: src=/home/ansible/ dest=/home/ansible....

文件操作类

cpoy

拷贝文件到远程主机

参数介绍

参数解释选项
src文件的源地址
dest文件的目标地址
content指定文件内的内容,用于copy文件当中的内容而不是整个文件
force远程主机已经存在文件是否强制覆盖yes|no
backup有同名文件存在,并且文件内容不一致时是否备份yes|no
owner用户(远程主机必须有该用户存在)
group用户组(远程主机必须有该用户组存在)
mode文件权限

示例

复制一个test.sh到远程主机的/home/ansible 目录下,修改其用户与用户组为ansible,修改其文件权限为:0664

---
- hosts: host
  remote_user: root
  vars:
    USER_GROUP_NAME: ansible
  tasks:
  - name: copy test.sh
    copy: src=test.sh dest=/home/ansible_test/ backup=yes owner={{USER_GROUP_NAME}} group={{USER_GROUP_NAME}} mode=0664

file

对文件的基本操作,如:创建文件,删除文件

参数介绍

参数含义选项
path指定操作的文件的目录或文件
state对文件的操作描述touch(创建文件)absent(删除文件)link(描述文件是软连接)hard(描述文件是硬链接)directory(描述文件是一个目录)
src当state为link 或hard时,创建软连接
force强制执行
owner用户(远程主机必须有该用户存在)
group用户组(远程主机必须有该用户组存在)
mode文件权限

示例

---
- hosts: host
  remote_user: root
  vars:
    USER_GROUP_NAME: ansible
  tasks:
  - name: copy test.sh
# create a file
    file: path=/home/ansible/test1.sh state=touch

blockinfile

在文件当中添加或删除一段文本,默认是在文件的最后进行操作。

参数介绍

参数含义选项
path操作的文件
block插入的内容
markeransible在插入一段文件时,会对文本添加开始与结束的标记,marker自定义标记
state操作描述present|absent
insertafter在某行后插入,可用pyhton正则表示行
insertbefore在某行前插入,可用pyhton正则表示行
backup备份yes|no
create文件不存在时,是否创建yes|no

示例

hosts: host
remote_user: root
tasks:
- name: blockinfile test.sh
  blockinfile:
    path: /home/ansible_test/test.sh
    block: "echo 'set tabstop=2' >> /etc/vimrc"
    marker: "#{mark}bif_test"
    backup: yes
    create: yes

lineinfle

确保文本存在于文件当中,或检查文本不在文件当中,当文本存在时,不做任何操作,反之,添加指定文本。

参数介绍

参数含义选项
path操作的文件
line文本内容
state操作present|absent
regexppython正则表达式
insertafter在某行后插入,可用pyhton正则表示行
inserbefore在某行前插入,可用pyhton正则表示行
backup备份yes|no
create创建文件yes|no
backrefs当正则表达式进行匹配行时,当没有匹配到文本时,会将文本插入最后一行,当backrefs=yes,没有匹配不会添加文本信息,保持文件不变。yes

示例

---
- hosts: host
  remote_user: root
  vars:
    USER_GROUP_NAME: ansible
  tasks:
  - name: lineinfile test.sh
    lineinfile:
      path: /home/ansible/test.sh
      line: "set noh>>/etc/vimrc"
      create: yes
~                       

find

远程主机查找符合条件的文件,与find命令一样

参数介绍:

参数含义选项
paths指定查找的文件目录,多个用逗号隔开
recurse是否递归查找,默认为noyes
hidden是否忽略查找隐藏文件,默认为noyes
file_type文件类型any,directory,file,link
patterns查找的文件名,可正则表示,使用正则时与use_regexp配合使用
use_regex是否启用正则表达式,默认是noyes
contains可根据文本内容进行查找,可用正则。
age时间范围,默认是以文件的mtime为基准单位:s,m,h,d,w(星期)
age_stamp时间类型atime,mtime,ctime
size文件大小,默认是大于单位:t,g,m,k,b
get_checksum找到文件之后返回问津的sha1校验码

示例

---
- hosts: host
  remote_user: root
  tasks:
  - name: find test.sh
    find:
      paths: /home/ansible/
      recurse: yes
      hidden: yes
      file_type: any
      patterns: "^te"
      use_regex: yes
      contains: "^echo"
      age: 3d
      age_stamp: ctime
      size: 1b
      get_checksum: yes

执行系统命令类

command

在远程主机上执行命令,需要注意:command不会经过远程主机的shell处理,会存在重定向,管道等操作失效。

参数介绍

参数含义选项
free_from执行的命令,一般不会使用,直接写命令。
chdir指定命令作用的目录
creates当文件存在时就不执行命令
removes当文件不存在就不执行命令

示例

建议使用命令行使用command模块:

 ansible host -m command -a "chdir=/home/ansible/ ls -al "

shell

在远程主机上面执行shell命令,使用远程主机shell执行命令,可以匹配管道,从定向等,建议摒弃command使用shell模块,

参数介绍

参数含义选项
free_from执行的命令,一般不会使用,直接写命令。
chdir指定命令作用的目录
executable指定shell
creates当文件存在时就不执行命令
removes当文件不存在就不执行命令

示例

---
- hosts: host
  remote_user: root
  vars:
    USER_GROUP_NAME: ansible
  tasks:
  - name: shelltest
    shell: touch /home/ansible/test1.sh

script

在远程主机上执行本机的shell脚本,但是不会讲shell脚本复制到远程主机上。

参数含义选项
free_from执行的命令,一般不会使用,直接写命令。
chdir指定命令作用的目录
creates当文件存在时就不执行命令
removes当文件不存在就不执行命令

示例

---
- hosts: host
  remote_user: root
  tasks:
  - name: shelltest
    shell: touch /home/ansible/test1.sh

test.sh

#!/bin/bash
if [ !-e /home/ansible_test/test1.sh ];then
    touch /home/ansible_test/test1.sh
fi

系统管理类

cron

定时任务,定时任务的形式

* * * * *  /bin/sh /PATH/ :一个*表示一个时间度量,从左到右为:分,时,天,周,月

参数

参数含义选项
minute*/3:每三分钟
hour
day
month
jobs执行的任务
user执行任务的用户
state对任务的操作描述,默认:present创建absent删除任务
name任务注释,同样可以标记一个任务,

示例

不指定时刻就会默认的*

ansible host -m cron -a "minute=*/1 jobs='/bin/bash /home/ansible_testd/test.sh'"

service

管理远程主机的服务

参数

参数含义选项
name服务名称
state操作描述started,stoped,restarted,reloaded
enabled是否开机自启动yes|no

示例

ansible host -m service -a "name=tomcat state=started enabled=yes"

user

用户管理

参数介绍

参数含义选型
name用户名
expires指定用户的的过期时间,数值时间戳,可以使用“date -d 2020-1-1 + %s ” 获取指定时间的时间戳
group指定用户的基本组
groups指定用户的附加组
append追加用户的附加组
shell指定用户的shell,常见的是/sbin/bash,/sbin/nologin
uid用户的uid
state操作描述,默认是presentabsent
remove删除同时删除其家目录yes|no
password用户密码,用户不能是明文,是通过crypt()函数加密的密文crypt.crypt(“123456”)
generate_ssh_key是否为用户生成ssh密钥对,如果默认文件夹下已经有同名的文件,不会被覆盖。yes|no
ssh_key_file定义密钥对的文件夹
ssh_key_comment

示例

生成密码加密文件

[root@zhang ~]# python
Python 2.7.5 (default, Aug  7 2019, 00:51:29) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt
>>> crypt.crypt('123456')
'$6$OIldu/jAm4iPnSXH$NOGCLMbIR/y00Bv29r8qOeS9BF.k08q2DktG1eSZWzBhYF/1jMT2u/VvzfL3oh60G394X6g8uu85Jt39FBGgq1'
>>> 
---
- hosts: host
  remote_user: root
  tasks:
  - name: useradd_test
  	user: nginx
  	group: nginx
  	shell: /sbin/nologin
  	expires: 1589731200

包管理类

yum

yum 包管理器

参数介绍

参数含义选项
name包名称
state操作描述,默认是present,表示包已经安装installed,latest.absent.removed
disable_gpg_checkgpg验证,默认是noyes
enablerepo指定对临时的yum源
disablerepo禁用yum源

示例:

---
hosts: host
remote_user: root
tasks:
- name: install nginx
  yum: name=nginx disable_gpg_check=yes state=insatll

yum_repository

yum 仓库的管路,对应/ect/yum.repo.d/*的文件

参数介绍:

参数含义选项
name仓库id对应*.repo的ID
baseurlyum仓库的url对应*.repo的baseurl
descriotion注释信息对应*.repo的name
file设置仓库的文件名
enable此仓库是否可用,默认是yesno
gpgcheckgpg校验,默认是noyes
state操作描述present|absent
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值