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 插入的内容
marker ansible在插入一段文件时,会对文本添加开始与结束的标记,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
regexp python正则表达式
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 是否递归查找,默认为no yes
hidden 是否忽略查找隐藏文件,默认为no yes
file_type 文件类型 any,directory,file,link
patterns 查找的文件名,可正则表示,使用正则时与use_regexp配合使用
use_regex 是否启用正则表达式,默认是no yes
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 操作描述,默认是present absent
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_check gpg验证,默认是no yes
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
baseurl yum仓库的url 对应*.repo的baseurl
descriotion 注释信息 对应*.repo的name
file 设置仓库的文件名
enable 此仓库是否可用,默认是yes no
gpgcheck gpg校验,默认是no yes
state 操作描述 present|absent

你可能感兴趣的:(ansible)