ansible常用模块(playbook)

分享
源代码 2024-9-21 07:40:26 78 0 来自 中国
ansible常用模块(playbook)

hostname

例子
- name: change hostnamehostname: name: ansimgr参数
name: 设置的主机名
file

例子
- name: touch ansible file file:   path: /root/ansible_test/ansible_test2.yaml   state: touch   owner: root   group: root   mode: 0755参数
follow: yes/no,默认no;如果原来的文件是link,拷贝后仍然是link
force: yes/no,默认no;欺压实验
group: 设定一个群组拥有拷贝到长途节点的文件权限
mode: 等同于chmod,参数可以为“u+rwx or u=rw,g=r,o=r”
owner: 设定一个用户拥有拷贝到长途节点的文件权限
path: 目的路径,也可以用dest,name代替
src: 待拷贝文件/文件夹的原始位置。
state: file/link/directory/hard/touch/absent,默认file;file代表拷贝后是文件;link代表终极是个软链接;directory代表文件夹;hard代表硬链接;touch代表天生一个空文件;absent代表删除
blockinfile

例子
- name: edit sshd_configblockinfile: backup: yes path: /etc/ssh/sshd_config block: |   Match User ansible-agent   PasswordAuthentication no state: present参数
path: required,指定要利用的文件。
block: 指定要利用的”一段文本”,此参数有一个别名叫”content”,使用content或block的作用是雷同的。
marker: 在指定文件中插入一段文本,ansible会自动为这段文本添加两个标记,一个开始标记,一个竣事标记,默认情况下,开始标记为# BEGIN ANSIBLE MANAGED BLOCK,竣事标记为# END ANSIBLE MANAGED BLOCK,使用marker参数自界说”标记”。比如,marker=#{mark}test ,如许设置以后,开始标记变成了# BEGIN test,竣事标记变成了# END test。
state: state参数有两个可选值,present与absent,插入和删除对应标记的段落。
insertafter: 在插入一段文本时,默认会在文件的末端插入文本,如果你想要将文本插入在某一行的反面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),体现将文本插入在符合正则表达式的行的反面。如果有多行文本都可以或许匹配对应的正则表达式,则以末了一个满意正则的活动准,此参数的值还可以设置为EOF,体现将文本插入到文档末端。
insertbefore: 在插入一段文本时,默认会在文件的末端插入文本,如果你想要将文本插入在某一行的前面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),体现将文本插入在符合正则表达式的行的前面。如果有多行文本都可以或许匹配对应的正则表达式,则以末了一个满意正则的活动准,此参数的值还可以设置为BOF,体现将文本插入到文档开头。
backup: 是否在修改文件之前对文件举行备份。
create: 当要利用的文件并不存在时,是否创建对应的文件。
lineinfile

例子
- name: set limit 2lineinfile: backup: yes path: /etc/security/limits.conf insertafter: '# End of file' line: "{{ item }}" state: presentwith_items: - '* soft nofile 655360' - '* hard nofile 131072' - '* soft nproc 655350' - '* hard nproc 655350' - '* soft memlock unlimited' - '* hard memlock unlimited'参数
path/dest:  目的文件绝对路径+文件名,必须参数
line:        更换/插入的内容
regexp:      待匹配内容
insertbefore:   匹配行前面插入
insertafter:    匹配行反面插入
state:    删除匹配行,需要将值设为absent,默认值present。
backup:   是否在修改文件之前对文件举行备份。 yes/no
create:   当要利用的文件并不存在时,是否创建对应的文件。yes/no
backrefs:yes/no,backrefs为no时,如果没有匹配,则添加一行line。如果匹配了,则把匹配内容替被换为line内容;backrefs为yes时,如果没有匹配,则文件保持稳定。如果匹配了,把匹配内容替被换为line内容。
setup

例子
- name: get server kernet setup: filter=ansible_kernel参数
filter: 可以筛选关键词,紧张可选的筛选项如下
ansible_all_ipv4_addresses  #全部呆板的ipv4地址
ansible_all_ipv6_addresses  #全部呆板的ipv6地址
ansible_date_time                 #体系时间
ansible_kernel                        #内核版本
ansible_default_ipv4            #默认呆板的ipv4地址
ansible_default_ipv6            #默认呆板的ipv6地址
ansible_distribution          #linux体系发行版本,如centos,ubuntu,debian等
ansible_nodename              #主机名
ansible_pkg_mgr                   #包管理器
ansible_python_version        #python版本
group

例子
- name: add group admin group:   gid: 1111   name: admin   system: yes   state: present参数
gid: 指创建的组ID信息
name: 指创建组名称信息
system: yes/no  system=yes 则体现创建体系组
state: present(默认)/absent,指定组状态;present创建指定的用户组,absent删除指定的用户组
cron

例子
- name: start chkrootkitcron: name: start chkrootkit minute: "0" hour: "2" weekday: "1" job: "/opt/chkrootkit-0.55/scripts/chkrootkit_exec.sh" user: root参数
backup: yes/no,默认no 如果设置了,请在修改crontab之前创建备份。该模块在backup_file变量中返回备份的位置。
cron_file: 如果指定了该文件,将使用该文件而不是单个用户的crontab。如果这是一个相对路径,它将根据/etc/cron.d举行表明,如果它是绝对的,它通常会是/etc/crontab。要使用cron_file参数,还必须指定use。
day: 默认""  作业应该运行的月份(1-31、、/2等)
disabled: yes/no,默认no   是否应该在crontab中禁用该作业(表明掉)。只有state=present时才有用。
env: yes/no,默认no    如果设置了,则管理crontab的情况变量。在crontab上添加了新的变量。Name和value参数是情况变量的名称和值。
hour: 默认"
" 作业应该运行的时间(0-23、、/2等)
insertafter: 与state=present和env一起使用。如果指定了,情况变量将被插入到指定情况变量的声明之后。
insertbefore: 与state=present和env一起使用。如果指定了,情况变量将被插入到指定情况变量的声明之前。
job: 实验的下令,如果设置了env,则为情况变量的值。下令不应该包含换行符。如果需要state=present。
minute: 默认""   作业应该运行的时间(0-59、、/2等)
month: 默认"
"    作业应该运行的月份(1-12,,/2,等等)
name: crontab表项的形貌,如果设置了env,则是情况变量的名称。如果需要state=absent。如果没有设置name而且state=present,那么无论现有的crontab条目是什么,都会创建一个新的crontab条目。
reboot: yes/no,默认no 是否应该在重新启动时运行作业。差别意使用该选项。用户应该使用special_time。
special_time: annually or daily or hourly or monthly or reboot or weekly or yearly  特殊时间规范昵称。
state: absent/present,默认present 是否确保作业或情况变量存在或不存在。
user: 需要修改crontab的用户。如果不设置,该参数默认使用root。
weekday: 默认""  作业应该运行的星期几(0-6体现周日-周六,等)
fetch

例子
- name: fetch chkrootkitfetch:  src: /opt/chkrootkit-0.55/scripts/chkrootkit_exec.sh  dest: /root/参数
dest: 生存文件的目次。例如,如果dest目次是/backup,则主机host.example.com上名为/etc/profile的src文件将被生存到/backup/host.example.com/etc/profile。主机名以库存名称为准
fail_on_missing: yes/no,默以为yes  当设置为yes时,如果由于任何缘故起因无法读取长途文件,则任务将失败。
flat: yes/no,默认no   允许您覆盖将主机名/path/to/文件追加到目的的默认活动。如果dest以’/'末了,它将使用源文件的基名,雷同于copy模块。如果使用单个主机,大概检索每个主机唯一定名的文件,这大概很有用。如果使用多个具有雷同文件名的主机,则每个主机的文件将被覆盖。
src: 要在长途体系上获取的文件。这必须是一个文件,而不是目次。在以后的版本中大概会支持递归抓取。
validate_checksum: yes/no,默认yes 在获取文件之后,验证源和目的校验和是否匹配。
firewalld

例子
- name: deny 8081 portfirewalld: port: 8081/tcp permanent: yes state: enabled参数
icmp_block: 在防火墙中添加大概移除的ICMP块。
icmp_bolck_inversion: 开启/关闭防火墙地区ICMP报文反转功能。
immediate: yes/no,默认no  如果将此设置设置为永久性,则应立即应用此设置。
interface: 在防火墙中添加或移除interface
masquerade: 在在防火墙中开启或关闭masquerade功能
offline: yes/no 是否在防火墙离线时运行此模块。
permanent: yes/no   该设置是否在运行的防火墙设置中,大概在重新启动时仍然存在。留意,如果这是no, immediate被假定为yes。
port: 在防火墙中添加或移除端口名称或端口范围。端口范围必须为PORT/PROTOCOL或PORT-PORT/PROTOCOL格式。
rich_rule: rich_rule添加或删除到防火墙
service: 在防火墙中添加或移除服务名称该服务必须在firewall-cmd --get-services的输出中列出。
source: 在防火墙中添加或移除某个泉源的网络
state: absent/disabled/enabled/present  启用或禁用一项设置。对于端口:该端口是否继承(enabled)或拒绝(disabled)毗连。状态的(present)和(absent)只能在地区级别利用中使用(即,当除了zone和state没有设置其他参数时)。
timeout: 默认0    该规则应在非永久性时生效的时间
zone: 添加或移除的防火墙地区。留意,可以为每个体系设置默认的地区,大概的值有block, dmz, drop, external, home, internal, public, trusted, work,public
script

例子
- name: sh chkrootkitscript: cmd: /opt/chkrootkit-0.55/scripts/chkrootkit_exec.sh参数
chdir: 在运行脚本之前,在长途节点上切换到这个目次。
cmd: 要运行的本地脚本的路径,后跟可选参数。
creates: 长途节点上的文件名,如果它已经存在,则不会运行此步调。
decrypt: yes/no,默认yes   此选项控制使用保险库对源文件举行自动解密。
executable: 用于调用脚本的可实验文件的名称或路径。
free_form: 本地脚本文件的路径,后跟可选参数。
removes: 长途节点上的文件名,如果不存在,则不会运行此步调。
user

例子
- name: add user luorf user:    system: yes   comment: user luorf   home: /home/luorf   groups: root   name: luorf    shell: /bin/bash参数
system: 默认创建为平凡用户,为yes则创建体系用户
append: 添加一个新的组
comment: 添加形貌信息
createhome: 给用户创建家目次
force: 欺压删除用户
group: 创建用户主组
groups: 将用户参加组大概附属组添加
home: 指定用户的家目次
name: 体近况态,是否create、remove、modify
password: 指定用户的暗码,为加密暗码
remove: 删除用户
shell: 设置用户的shell登录情况
uid: 设置用户ID
update_password: 修改用户暗码
state: 用户状态,默以为present,体现新建用户
command

例子
- name: cat hosts file command: chdir=/root ls -lt 参数
chdir: 实验下令前,切换到目次
creates: 当该文件存在时,不实验该步调
executable: 切换shell来实验下令,需要使用下令的绝对路径
free_from: 需要实验的脚本,一样平常使用Ansible的-a参数代替。
removes: 当该文件不存在时,不实验该步调
warn: 如果在ansible.cfg中存在告警,如果设定了false,不会告警该行
阐明
command模块不支持变量、重定向、管道符等
shell

例子
- name: hosts bakshell: cp /etc/hosts /etc/hosts.bak.`date +%Y%m%d`参数
chdir: 在哪个目次下实验shell下令,相称于实验shell下令前先cd到对应目次
creates: 如果存在某文件,就不实验shell
removes: 如果不存在某文件,就不实验shell;与creates左右相反
executable: 修改并指定shell表明器来实验下令
free_form: 指的就是详细的shell下令,实际上是一个不存在的选项
ping

例子
- name: ping all serverping: data: crash参数
data: 为ping返回值返回的数据。默以为’pong’,如果该参数设置为crash,模块将引发非常。
make

例子
- name: Build ClamAV 3 make: chdir: /root/clamav-{{clamav_version}}/build target: install become: yes参数
chdir: 在实验task之前,需要切换的目次路径—必须
file: 标准Makefile的路径
params: 一些额外的需要传给make下令的参数
target: make要实验的利用,可以写:install/test/all
make.params.PREFIX: 编译之后的文件存放位置。实用于不是root用户实验的脚本
archive

例子
- name:  archive ansible test files archive:   path: /root/ansible_test/   dest: /root/ansible_test.gz   owner: root参数
path: 长途主机上需要被打包/压缩的源文件(可以是文件列表,支持glob模式)
dest: 打包/压缩后的包文件路径(包文件的父目次必须存在);如果包文件已存在,则会被覆盖。
format: 指定压缩范例,包罗:bz2、gz(默认)、tar、xz、zip
owner: 指定属主
group: 指定属组
mode: 指定权限
remove: yes|no,默以为no,在打包/压缩后,不删除源文件
unarchive

例子
- name: Unarchive kubernetes packageunarchive: src: "/opt/kubernetes-server-linux-amd64.tar.gz" dest: "/usr/local/bin/" remote_src: yes extra_opts:  - --strip-components=3 exclude:  - "*.tar"  - "*_tag"  - "*.org"  - "*.io"  - "*.com"  - "*.net"参数
creates: 如果指定的绝对路径(文件或目次)已存在,则不会运行此步调。。
copy: 默以为yes,拷贝的文件从ansible主机复制到长途主机,如果没有可复制对象,在长途主机上探求,no在长途主机上探求src源文件解压
src: tar源路径,可以是ansible主机上的路径,也可以是长途主机上的路径,如果是长途主机上的路径,则需设置copy=no
dest: 长途主机上的目的绝对路径
mode: 设置解压缩后的文件权限
exec: 列出需要清除的目次和文件
remote_src: 设置remote_src=yes为解包目的上已经存在的档案。对于Windows目的,改用win_unzip模块。
owner: 解压后文件或目次的属主
group: 解压后的目次或文件的属组
exclude: 列出要从unarchive利用中清除的目次和文件条目。
extra_opts:通过传入数组指定其他选项
keep_newer:不要更换比归档文件更新的现有文件
k8s

例子
- name: create namespacek8s:  name: my-namespace  api_version: v1  kind: Namespace  state: present参数
name: 用于指定对象的名称
api_version: 指定API版本号,默认“v1”
force:yes/no,默以为no;如果设置为“yes”,而且存在状态,则将更换现有对象。
kind: 指定对象资源范例
namespace:用于指定对象的下令空间
state:absent/present /patched,默以为present ;present,如果不存在,则安装;absent,如果存在,则删除,patched,如果存在,则修补
reboot

例子
- name: Wait for server to restartreboot: reboot_timeout: 180参数
reboot_timeout: 等候盘算机重新启动并相应测试下令的最长秒数,默以为600S
test_command: 重启后测试下令,默以为“whoami”
msg:重启条件示用户的消息,默以为“Reboot initiated by Ansible”
service

例子
- name: init service chronyservice: name: chronyd  enabled: yes  state: started参数
name(required): 设置启停服务名称
enabled: 设置服务是否开机自启动,可选项yes/no;如果参数不指定,原有服务开机自启动状态举行保存
sleep: 如果实验了restarted,则在stop和start之间甜睡几秒钟
state: 需要对当前服务实验的动作,可选项reloaded(平滑重启),restarted(重启),started(启动),stopped(克制)
get_url

例子
- name: get file calico-etcd.yamlget_url:  url=https://docs.projectcalico.org/manifests/calico-etcd.yaml dest=/root/ validate_certs=no参数
dest: 指定将文件下载的绝对路径—必须
url: 文件的下载地址(网址)—必须
url_username: 用于http根本认证的用户名
url_password: 用于http根本认证的暗码
validate_certs: 如果否,SSL证书将不会验证。这只应在使用自署名证书的个人控制站点上使用
owner: 指定属主
group: 指定属组
mode: 指定权限
copy

例子
- name: calico-etcd cfg 1copy: src: calico.sh dest: /root/ owner: root group: root mode: 0755参数
src: 用于指定需要copy的文件或目次。
dest: 用于指定文件将被拷贝到长途主机的哪个目次中,dest为必须参数。
content: 当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,src与content两个参数必有其一,否则会报错。
force: 当长途主机的目的路径中已经存在同名文件,而且与ansible主机中的文件内容差别时,是否欺压覆盖,可选值有yes和no,默认值为yes,体现覆盖,如果设置为no,则不会实验覆盖拷贝利用,长途主机中的文件保持稳定。
backup: 当长途主机的目的路径中已经存在同名文件,而且与ansible主机中的文件内容差别时,是否对长途主机的文件举行备份,可选值有yes和no,当设置为yes时,会先备份长途主机中的文件,然后再将ansible主机中的文件拷贝到长途主机。
owner : 指定文件拷贝到长途主机后的属主,但是长途主机上必须有对应的用户,否则会报错。
group: 指定文件拷贝到长途主机后的属组,但是长途主机上必须有对应的组,否则会报错。
mode: 指定文件拷贝到长途主机后的权限,如果你想将权限设置为”rw-r--r--“,则可以使用mode=0644体现,如果你想要在user对应的权限位上添加实验权限,则可以使用mode=u+x体现。
template

例子
- name: 将index.html文件复制到节点,并将此中的变量更换为对应的值template: src: ~/play/template/index.html dest: /var/www/html/index.html $ cat index.html# 将变量写在文件中welcome to {{ ansible_hostname }} on {{ ansible_ztuzex7lqa.ipv4.address }} 参数
backup: yes/no,创建个包罗timestamp在内的文件备份,以备不时之需
dest: 必选项,长途节点上的绝对路径,用于放置template文件
group: 设置长途节点上的的template文件的所属用户组
mode: 设置长途节点上的template文件权限。雷同Linux中chmod的用法
owner: 置长途节点上的template文件所属用户
src: 必选项,本地Jinjia2模版的template文件位置
filesystem

例子
- name: Create a ext4 filesystem on /dev/sdb1 and check disk blocksfilesystem: fstype: ext4 dev: /dev/sdb1 opts: -cc参数
fstype: 文件体系的范例(Choices: btrfs, ext2, ext3, ext4, ext4dev, f2fs, lvm, ocfs2, reiserfs, xfs, vfat,swap)
dev: 准备查抄的硬盘分区
force: yes/no,默以为no;欺压格式化文件体系,在已经格式化文件体系的底子上重新格式化文件体系需要把参数配成yes
opts: 其他mkfs下令的参数
lvol

例子
- name: Create a logical volume of 512m with disks /dev/sdb1 and /dev/sdb2lvol: vg: firefly lv: test size: 512 pvs: /dev/sdb1,/dev/sdb2参数
vg: 在哪个卷组上创建lv
lv: 逻辑卷名
size: 逻辑卷巨细,默认单元是M。
pvs: 指定物理卷
force: yes/no,默认no,即默认不允许缩小和删除lv利用,如果肯定要实验就force=yes
state: 模块状态,absent代表删除,present代表新建,默认是present。
active: 卷是否已激活而且对主机可见
lvg

例子
- name: Create a volume group on top of /dev/sdb1 with physical extent size = 32MBlvg: vg: vg.services pvs: /dev/sdb1 pesize: 32参数
vg: 要创建的卷组名称
pvs: 要参加到卷组中的物理卷列表
pesize: 指定pe巨细,默认值是4M,默认单元是M。
state: 模块状态,absent代表删除,present代表新建,默认是present。
yum_repository

例子
- name: Add repositoryyum_repository: name: epel description: EPEL YUM repo baseurl: https://download.fedoraproject.org/pub/epel/$releasever/$basearch/参数
name: 指定repository ID。
description: 软件源的形貌信息。
file: 生存repo信息的文件(不消加.repo后缀);如果不指定,默认生存在以name定名的repo文件中。
baseurl: repodata文件的URL。
state: present(默认)或absent。
mirrorlist: mirrorlist是一个包含多个baseurl的列表文件,这里指定的是mirrorlist文件的URL。
gpgcheck: yes|no,是否需要对该软件源的步调包举行GPG校验。没有默认值,如果不设置,将会延用/etc/yum.conf中的设置,大概体系默认的no。
package_facts

例子
- name: take installed packagepackage_facts: manager: auto- name: list installed packagedebug: var: ansible_facts.packages参数
manager: auto/rpm/apt/portage/pkg/pacman/apk,默认auto;体现体系使用的包管理器,auto体现自动判定包管理器范例
strategy:first/all,默认first;怎样查询体系上的步调包管理器。 first意味着它将仅返回有关第一个受支持的步调包管理器的信息。 all 将返回体系上全部受支持的可用软件包管理器的信息。
package

例子
- name: install package mariadbpackage: name:   - mariadb-server state: latest参数
name: 指定要安装的软件包名
state: present/absent;present 安装 absent 卸载
yum/dnf

例子
- name: install service chronydnf: name:  - chrony参数
name: 用于指定需要管理的软件包,比如 chrony。
state: 状态 present,installed,removed,latest,absent;默以为present;installed and present等效;latest标记安装yum中最新版本;absent and removed 等效,体现删除安装包。
disable_gpg_check: 用于禁用rmp包的公钥gpg验证,默认值no,体现不做验证,设置为yes 体现禁用验证,即不验证包,直接安装。在对应的yum源没有开启gpg验证的情况下,需要将此参数的值设置为yes,否则会报错而无法举行安装。
enablerepo: 用于指定安装软件包是暂时启用的yum源。如果你想要从A源中安装软件,但是你不确定A源是否启用了,你可以在安装软件包时将此参数的值设置为yes,纵然A源的设置是未启用,也可以在安装软件包时暂时启用A源。
Disablerepo: 用于指定安装软件包是暂时克制用的yum源。当多个yum源中同时存在要安装的软件包时,可以使用此参数暂时禁用某个源
mount

例子
- name: mount mediamount: src=/dev/sr0 path=/media state=mounted fstype=iso9660参数
src: 界说挂载内容
path: 装备挂载至本地的路径,必须指定
fstype: 挂载的文件体系范例,xfs、nfs...,必须指定
opts: 挂载的参数,defaults、ro...
state: 挂载的状态,absent/mounted/unmounted;mounted举行挂载,修改/etc/fstab信息,unmounted暂时卸载,不修改/etc/fstab信息,absent永久性卸载,并修改 /etc/fstab信息
其他

main.yml

例子
# cat main.yml - import_tasks: kube-proxy_cfg.yml 参数
import_tasks:静态加载,playbook在运行一开始分析的时间,加载子任务中全部变量;
include_tasks:动态加载,playbook在实验到该子任务的时间,才会加载该子任务中全部变量;
增补:import_tasks调用的子任务文件名称不可以使用变量,但是include_tasks调用的子任务名称则可以加变量;import_tasks会调用子任务中的全部tag,使用–list-tags参数时也能看到,但是include_tasks调用的子任务中如果界说了tag,则不会生效。
常用的通用参数

忽略错误
ignore_errors: True打标签
tags: kube-proxy_cfg输出效果
register: result3- debug: var: result3.stdout判定后输出效果
  debug:    msg: "NetworkManager版本:{{ansible_facts.packages['NetworkManager'][0].version}}"  when: "'NetworkManager' in ansible_facts.packages"   # 如果NetworkManager在已安装列表中,表现NetworkManager的版本循环参数
line: "{{ item }}"with_items: - '* soft nofile 655360' - '* hard nofile 131072' - '* soft nproc 655350' - '* hard nproc 655350' - '* soft memlock unlimited' - '* hard memlock unlimited'使用root大概sudoer的权限
  become: yes怎样查询模块的用法和写法

实验下令ansible-doc 「ansiblem模块名称」,然后输入「/EXAMPLE(留意大写) 」回车键
$ ansible-doc user/EXAMPLE
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-19 02:27, Processed in 0.203291 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表