admin 管理员组文章数量: 887007
Ansible部署及应用
- ansible文件配置
- ansible命令参数
- ansible常用命令
- ansible的安装
- ansible模块
- copy&fetch&file
- blockinfile&lineinfile&find
- replace&command&shell
- script&cron&service
- user&group
- yum_repository&yum
- unarchive&archive&mount
- setup
ansible文件配置
主要文件
配置文件
/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性
/etc/ansible/hosts主机清单
/etc/ansible/roles/存放角色的目录
程序
/usr/bin/ansible 主程序,临时命令执行工具
/usr/bin/ansible-doc查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy下载/- 上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook定制自动化任务,编排剧本工具/usr/bin/ansible-pull远
程执行命令的工具
/usr/bin/ansible-vault文件加密工具
/usr/bin/ansible-console基于Console界面与用户交互的执行工具
/etc/ansible/hosts文件格式
inventory文件遵循IN坟件风格,中括号中的字符为组名。可以将同-个主机
同时归并到多个不同的组中;此外,当如若目标主机使用了非默认的SSH端口,
还可以在主机名称之后使用冒号加端口号来标明
ntp.magedu.com
[webservers]
www1.magedu.com:222+
www2.magedu.com
[dbservers]
db1.magedu.com
db2.magedu.com
db3.magedu.com
主机名的调度关系
◆逻辑与
ansible "websrvs:&dbsrvs” -m ping
在websrvs组并且在dbsrvs组中的主机
◆逻辑非
ansible 'websrvs:!dbsrvs' -m ping
在websrvs组,但不在dbsrvs组中的主机
卜
注意:此处为单引号
◆综合逻辑
ansible 'websrvs:dbsrvs:&appsrvs:!ftpsrvs'’ -m ping
◆正则表达式
ansible "websrvs:&dbsrvs" -m ping
ansible“ ~(web|db).*\.magedu\.com”-m ping
ansible.cfg配置参数
配置文件在:/etc/ansible/ansible.cfg
inventory
这个参数表示资源清单 . inventory文 件 的 位 置 , 资源清单就是 一些Ansible需要连接管理的主机列表 。
实例如下:
inventory == /etc/Ansible/hosts
library
Ansible的操作动作,无论是本地或远程,都使用一小段代码来执行,这小段代码称为模块 , 这个library参数就是指向存放Ansible模块的 目录 。
实例如下:
library = /usr/share/Ansible
Ansible支持多个记录方式,只要用W号(:)隔幵就可以,同时也会检査当前执行playbook位罝下的•/library目录。
forks
默认悄况下Ansible最多能有多少个进程同时丁-作,默认设置敁多5个 进程并进行理 。具体需要设置多少个,可以根据控制主机的性能和被管节点的数诂来确定,可能是50或100,默认值5是非常保守的设置。
实例如下:
forks = 5
sudo_user
这是设罝默认执行命令的用户,也可以在playbook中重新设置这个参数。
实例如下:
sudo_user = root
remote_port
这是指定连接被管节点的管理端口,默认是22。除非设置了特殊的SSH端门.不然这个参数一般是不需要修改的。
实例如下:
remote_port = 22
host_key_checking
这是设置是否检査SSH主机的密钥。可以设置为True或False。
实例如下:
host_key_checking = False
timeout
这是设置SSH连接的超时间隔,单位是秒。
实例如下:
timeout = 60
log_path
Ansible系统默认是不记录日志的,如果想把Ansible系统的输出记录 到日志文件,需要设置log_ path指定一个存储Ansible日志的文件 。
实例如下:
log__path = /var/log/Ansible. log
ansible命令执行过程
➢1.加载自己的配置文件默认/etc/ansible/ansible.cfg
➢2.加载自己对应的模块文件,如command
➢3.通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器
的对应执行用户$HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
➢4.给文件+x执行
➢5.执行并返回结果
➢6.删除|临时py文件, sleep 0退出
◆执行状态:
➢绿色:执行成功并且不需要做改变的操作
➢黄色:执行成功并且对目标主机做变更
➢红色:执行失败
ansible命令参数
参数 | 详细参数 | 含义 |
---|---|---|
-a | –args=‘Arguments’ | 命令行参数 |
-m | –module-name=NAME | 执行模块的名字,默认使用 command 模块,所以如果是只执行单一命令可以不用 -m参数 |
-i | –inventory=PATH | 指定库存主机文件的路径,默认为/etc/ansible/hosts. |
-u | –user=Username | 执行用户,使用这个远程用户名而不是当前用户 |
-U | –sud-user=SUDO_User | sudo到哪个用户,默认为 root |
-k | –ask-pass | 登录密码,提示输入SSH密码而不是假设基于密钥的验证 |
-K | –ask-sudo-pass | 提示密码使用sudo |
-s | –sudo | sudo运行 |
-S | –su | 用 su 命令 |
-l | –list | 显示所支持的所有模块 |
-s | –snippet | 指定模块显示剧本片段 |
-f | –forks=NUM | 并行任务数。NUM被指定为一个整数,默认是5。 #ansible testhosts -a “/sbin/reboot” -f 10 重启testhosts组的所有机器,每次重启10台 |
–private-key=PRIVATE_KEY_FILE | 私钥路径,使用这个文件来验证连接 | |
-v | –verbose | 详细信息 |
all | 针对hosts | |
-M | –module-path=MODULE_PATH | 要执行的模块的路径,默认为/usr/share/ansible/ |
–list-hosts | 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该 playbook 文件 | |
-o | –one-line | 压缩输出,摘要输出.尝试一切都在一行上输出。 |
-t | –tree=Directory | 将内容保存在该输出目录,结果保存在一个文件中在每台主机上。 |
-B | 后台运行超时时间 | |
-P | 调查后台程序时间 | |
-T | –timeout=Seconds | 时间,单位秒s |
-P | –poll=NUM | 调查背景工作每隔数秒。需要- b |
-c | –connection=Connection | 连接类型使用。可能的选项是paramiko(SSH),SSH和地方。当地主要是用 |
–tags=TAGS | 只执行指定标签的任务 例子:ansible-playbook test.yml --tags=copy 只执行标签为copy的那个任务 | |
–list-hosts | 只打印有哪些主机会执行这个 playbook 文件,不是实际执行该 playbook 文件 | |
–list-tasks | 列出所有将被执行的任务 | |
-C | –check | 只是测试一下会改变什么内容,不会真正去执行;相反,试图预测一些可能发生的变化 |
–syntax-check | 执行语法检查的剧本,但不执行它 | |
-l | –limit=SUBSET | 进一步限制所选主机/组模式 --limit=192.168.0.15 只对这个ip执行 |
–skip-tags=SKIP_TAGS | 只运行戏剧和任务不匹配这些值的标签 --skip-tags=copy_start | |
-e | –extra-vars=EXTRA_VARS | 额外的变量设置为键=值或YAML / JSON |
ansible常用命令
ansible-doc
ansible-doc -h
Usage: ansible-doc [options] [module...]
该指令用于查看模块信息,常用参数有两个-l 和 -s ,具体如下:
//列出所有已安装的模块
ansible-doc -l
//查看具体某模块的用法,这里如查看command模块
ansible-doc -s command
ansible-galaxy
ansible-galaxy -h
Usage: ansible-galaxy [init|info|install|list|remove] [--help] [options] ...
ansible-galaxy 指令用于方便的从https://galaxy.ansible.com/ 站点下载第三方扩展模块,我们可以形象的理解其类似于centos下的yum、python下的pip或easy_install 。如下示例:
[root@localhost ~]# ansible-galaxy install aeriscloud.docker
- downloading role 'docker', owned by aeriscloud
- downloading role from https://github.com/AerisCloud/ansible-docker/archive/v1.0.0.tar.gz
- extracting aeriscloud.docker to /etc/ansible/roles/aeriscloud.docker
- aeriscloud.docker was installed successfully
这个安装了一个aeriscloud.docker组件,前面aeriscloud是galaxy上创建该模块的用户名,后面对应的是其模块。在实际应用中也可以指定txt或yml 文件进行多个组件的下载安装。这部分可以参看官方文档。
ansible-lint
ansible-lint是对playbook的语法进行检查的一个工具。用法是ansible-lint playbook.yml 。
ansible-playbook
该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作,这个后面会做为一个重点来讲。
ansible-pull
该指令使用需要谈到ansible的另一种模式pull 模式,这和我们平常经常用的push模式刚好相反,其适用于以下场景:你有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间;
你要在一个没有网络连接的机器上运行Anisble,比如在启动之后安装。这部分也会单独做一节来讲。
ansible-vault
ansible-vault主要应用于配置文件中含有敏感信息,又不希望他能被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。主要对于playbooks里比如涉及到配置密码或其他变量时,可以通过该指令加密,这样我们通过cat看到的会是一个密码串类的文件,编辑的时候需要输入事先设定的密码才能打开。这种playbook文件在执行时,需要加上 --ask-vault-pass参数,同样需要输入密码后才能正常执行。
ansible的安装
rpm包安装
#先安装阿里云的EPEL源
#RHEL7
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#RHEL6
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
yum安装ansible
yum install -y ansible
编译安装
#安装依赖
yum -y install python-jinja2 PyYAML python-paramiko python-babel python-crypto
#解压ansible压缩包
tar xf ansible-1.5.4.tar.gz
#进入目录
cd ansible-1.5.4
#执行编译安装命令
python setup.py build
python setup.py install
#创建目录
mkdir -p /etc/ansible
#拷贝目录文件到新创建的目录
cp -r examples/* /etc/ansible
Git方式
#直接从git上ansible软件直接下载下来,直接使用脚本安装即可
git clone git://github.com/ansible/ansible.git --recursive
cd ./ansible
source ./hacking/env-setup
pip安装
#pips是安装Python包管理器,类似yum
yum install python-pip python-devel
yum install gcc glibc-deve zibl-devel rpm-bulid openssl-devel
pip insyall --upgrade pip
pip install ansible --upgrade
#确认ansible安装成功,查看ansible版本
ansible --version
#程序二进制命令路径
ls -l /usr/bin/ansible
lrwxrwxrwx 1 root root 20 Apr 21 19:58 /usr/bin/ansible -> /usr/bin/ansible-2.7
#这里用到了软连接的方式,指向真正的版本目录,这就是之前提到的灰度发布的手法,如果新版本不行可以直
参考链接
ansible模块
参考链接
ansible-doc -s 模块名
copy&fetch&file
fetch
fetch模块中参数作用:
dest:指定拉取文件到本地以后,文件存放的位置
src:指定从受管主机中拉取哪个文件
可以看到server2进行了拉取的动作,而server3没有。这是因为server2的md5sum改变了,这就是md5sum校验的应用。
copy模块
copy模块与fetch模块的区别:
见名知义,copy模块的作用就是拷贝文件,它与之前介绍的fetch模块类似,不过,fetch模块是从远程主机中拉取文件到ansible主机,而copy模块是将ansible主机上的文件拷贝到远程主机中
copy模块参数 | |
---|---|
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表示 |
#拷贝文件,当文件内容不一致时,直接覆盖。当文件内容一致时,不进行copy动作
ansible testB -m copy -a "src=/testdir/copytest dest=/opt"
ansible testB -m copy -a "src=/testdir/copytest dest=/opt force=no #默认为yes "
#使用content参数指定文件内容:
ansible testB -m copy -a "content="westos\nlinux\n" dest=/opt/test"
#当文件内容不一致时,先备份,再覆盖
ansible testB -m copy -a "src=/testdir/copytest dest=/opt backup=yes"
#指定文件拥有者,指定拥有者的前提条件是远程主机中要有该用户,在远程主机中创建用户,当远程主机中不存在要拷贝的文件时,直接进行拷贝:
ansible testB -m copy -a "src=/testdir/westos dest=/opt owner=nigar"
#当远程主机中存在要拷贝的文件时,不进行拷贝动作,单纯的修改拥有者:
ansible testB -m copy -a "src=/testdir/copytest dest=/opt owner=nigar"
#指定文件所属组,当远程主机中存在要拷贝的文件时,不进行拷贝动作,单纯的修改所属组:
ansible testB -m copy -a "src=/testdir/copytest dest=/opt group=nigar"
#指定文件权限:
ansible testB -m copy -a "src=/testdir/hh dest=/opt mode=0640"
file模块
file模块可以帮助我们完成一些对文件的基本操作, 比如:创建文件或目录、删除文件或目录、修改文件权限等
file模块参数 | |
---|---|
path | 必须参数,用于指定要操作的文件或目录,在之前版本的ansible中,使用dest参数或者name参数指定要操作的文件或目录,为了兼容之前的版本,使用dest或name也可以 |
state | 此参数非常灵活,此参数对应的值需要根据情况设定,比如,当我们需要在远程主机中创建一个目录的时候,我们需要使用path参数指定对应的目录路径。假设:我想要在远程主机上创建/testdir/a/b目录,那么我则需要设置path=/testdir/a/b,但是,我们无法从"/testdir/a/b"这个路径看出b是一个文件还是一个目录,ansible也同样无法单单从一个字符串就知道你要创建文件还是目录。所以,我们需要通过state参数进行说明,当我们想要创建的/testdir/a/b是一个目录时,需要将state的值设置为directory,"directory"为目录之意, 当它与path结合,ansible就能知道我们要操作的目标是一个目录,同理,当我们想要操作的/testdir/a/b是一个文件时,则需要将state的值设置为touch,当我们想要创建软链接文件时,需将state设为link,想要创建硬链接文件时,需要将state设置为hard,当我们想要删除一个文件时(删除时不用区分目标是文件、目录、还是链接),则需要将state的值设置为absent,“absent” 为缺席之意,当我们想让操作的目标"缺席"时,就表示我们想要删除目标。 |
src | 当state设置为link或者hard时,表示我们想要创建一个软链或者硬链,所以,我们必须指明软链或硬链链接的哪个文件,通过src参数即可指定链接源 |
force | 当state=link的时候,可配合此参数强制创建链接文件,当force=yes时,表示强制创建链接文件,不过强制创建链接文件分为两种情况: |
情况一:当你要创建的链接文件指向的源文件并不存在时,使用此参数,可以先强制创建出链接文件。 情况二:当你要创建链接文件的目录中已经存在与链接文件同名的文件时,将force设置为yes,会将同名文件覆盖为链接文件,相当于删除同名文件,创建链接文件。 情况三:当你要创建链接文件的目录中已经存在与链接文件同名的文件,并且链接文件指向的源文件也不存在,这时会强制替换同名文件为链接文件。 | |
owner | 用于指定被操作文件的属主,属主对应的用户必须在远程主机中存在,否则会报错。 |
group | 用于指定被操作文件的属组,属组对应的组必须在远程主机中存在,否则会报错。 |
mode | 用于指定被操作文件的权限,比如,如果想要将文件权限设置t为rw-r-x—,则可以使用mode=650进行设置,或者使用mode=0650,效果也是相同的,如果你想要设置特殊权限,比如为二进制文件设置suid,则可以使用mode=4700 |
recurse | 当要操作的文件为目录,将recurse设置为yes,可以递归的修改目录中文件的属性 |
#在远程主机中创建文件,目标主机的上级目要存在
ansible testB -m file -a "path=/testdir/westos state=touch"
#当远程主机中存在要创建的文件时,与copy不同的是,它会修改文件的时间戳:
ansible testB -m file -a "path=/testdir/westos state=touch"
#在远程主机中创建目录:
ansible testB -m file -a "path=/testdir/westosdir state=directory"
#当远程主机中存在要创建的目录时,与上一步中创建文件不同的是,它不进行改变:
ansible testB -m file -a "path=/testdir/westosdir state=directory"
#在远程主机中制作软链接:
ansible testB -m file -a "path=/testdir/linkwestos state=link src=/testdir/westos"
#在远程主机中制作硬链接:
ansible testB -m file -a "path=/testdir/hardwestos state=hard src=/testdir/westos"
#使用force参数来强制链接:
ansible testB -m file -a "path=/testdir/linkwestos state=link src=/testdir/westos-yy force=yes"
#删除远程主机中的文件:
ansible testB -m file -a "path=/testdir/linkwestos state=absent"
#创建文件并指定所有人:
ansible testB -m file -a "path=/testdir/a state=touch owner=nigar"
#创建文件并指定所属组,当文件存在时指定所属组,不仅会修改所属组,还会修改文件的时间戳
ansible testB -m file -a "path=/testdir/b state=touch group=nigar"
#创建目录并指定所属组,当目录存在时指定所有人,会修改所属组,但不会修改时间戳:
ansible testB -m file -a "path=/testdir/c state=directory group=nigar"
#修改目录权限:
ansible testB -m file -a "path=/testdir/c mode=666"
#修改文件权限,文件要存在
ansible testB -m file -a "path=/testdir/d mode=4700"
#递归创建目录:
ansible testB -m file -a "path=/testdir/1/2 state=directory owner=nigar group=nigar recurse=yes"
blockinfile&lineinfile&find
blockinfile模块
blockinfile模块功能
blockinfile模块可以帮助我们在指定的文件中插入"一段文本",这段文本是被标记过的,换句话说就是,我们在这段文本上做了记号,以便在以后的操作中可以通过"标记"找到这段文本,然后修改或者删除它
blockinfile模块参数 | |
---|---|
path | 必须参数,指定要操作的文件。 |
block | 此参数用于指定我们想要操作的那一段文本,此参数有一个别名叫"content",使用content或block的作用是相同的 |
marker | 假如我们想要在指定文件中插入一段文本,ansible会自动为这段文本添加两个标记,一个开始标记,个结束标记,默认情况下,开始标记为BEGINANSIBLE MANAGED BLOCK,结束标记为ENDANSIBLE MANAGED BLOCK,我们可以使用marker参数自定义"标记",比如,marker= # { mark}test,这样设置以后,开始标记变成了# BEGIN test,结束标记变成了# END test。没错,{mark}会自动被替换成开始标记和结束标记中的BEGIN和END,我们也可以插入很多段文本,为不同的段落添加不同的标记,下次通过对应的标记即可找到对应的段落 |
state | state参数有两个可选值,present与absent,默认情况下,我们会将指定的一段文本"插入"到文件中,如果对应的文件中已经存在对应标记的文本,默认会更新对应段落,在执行插入操作或更新操作时,state的值为present,默认值就是present,如果对应的文件中已经存在对应标记的文本并且将state的值设置为absent,则表示从文件中删除对应标记的段落 |
insertafter | 在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的后面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的后面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为EOF,表示将文本插入到文档末尾 |
insertbefore | 在插入一段文本时,默认会在文件的末尾插入文本,如果你想要将文本插入在某一行的前面,可以使用此参数指定对应的行,也可以使用正则表达式(python正则),表示将文本插入在符合正则表达式的行的前面,如果有多行文本都能够匹配对应的正则表达式,则以最后一个满足正则的行为准,此参数的值还可以设置为BOF,表示将文本插入到文档开头。 |
backup | 是否在修改文件之前对文件进行备份。 |
create | 当要操作的文件并不存在时,是否创建对应的文件 |
#默认插入到文档末尾:
ansible testB -m blockinfile -a 'path=/testdir/rc.local block="systemctl start nsf\nsystemctl start httpd"'
#注意:# BEGIN ANSIBLE MANAGED BLOCK和# END ANSIBLE MANAGED BLOCK为标记文本
#自定义标记文本,插入成功,是因为虽然插入的内容相同,但标记文本不同,所以ansible认为它是不同的两段文本,
#当文档中存在标记文本相同且内容相同的文本时,再次执行插入命令,不会做更新
ansible testB -m blockinfile -a 'path=/testdir/rc.local block="systemctl start nsf\nsystemctl start httpd" marker="{mark} service to start!"'
#block=""删除指定标记文本中的文本内容:
ansible testB -m blockinfile -a 'path=/testdir/rc.local block="" marker="{mark} service to start!"'
#state=absent删除指定标记文本中的文本内容:
ansible testB -m blockinfile -a 'path=/testdir/rc.local marker="{mark} service to start!" state=absent'
#insertbefore=BOF插入文本到文档开头:
ansible testB -m blockinfile -a 'path=/testdir/rc.local block="#####blockinfile####test####" marker="{mark} test!!" insertbefore=BOF'
#当文档中存在标记文本相同但插入内容不相同的文本时,再次执行插入命令,会在原来的文本上做更新:
ansible testB -m blockinfile -a 'path=/testdir/rc.local block="#####test####" marker="{mark} test!!" insertbefore=BOF'
#使用正则表达式指定插入位置:
ansible testB -m blockinfile -a 'path=/testdir/rc.local block="#####test####" marker="{mark} test!!" state=absent' #先删除刚才插入的文本
ansible testB -m blockinfile -a 'path=/testdir/rc.local block="#####test####" marker="{mark} test!!" insertafter="^#!/bin/bash"' #插入到以#!/bin/bash开头的行后面
#当插入内容与文本内容不同时,在做更新之前,备份:
ansible testB -m blockinfile -a 'path=/testdir/rc.local block="@@@@change@@@@" marker="{mark} test!!" insertafter="^#!/bin/bash" backup=yes'
#当要操作的文件不存在时,使用create=yes参数建立文件(不使用会报错):
ansible testB -m blockinfile -a 'path=/testdir/test block="$$$test$$$" marker="{mark} test!!" insertafter="^#!/bin/bash" create=yes'
lineinfile
我们可以借助lineinfile模块,确保"某一行文本"存在于指定的文件中,或者确保从文件中删除指定的"文本"
(即确保指定的文本不存在于文件中) ,还可以根据正则表达式,替换"某一行文本"。
lineinfile模块参数 | |
---|---|
path | 必须参数,指定要操作的文件。 |
line | 使用此参数指定文本内容。 |
regexp | 使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。 |
state | 当想要删除对应的文本时,需要将state参数的值设置为absent, absent为缺席之意,表示删除,state的状认值为present |
insertafter | 借助insertafter参数可以将文本插入到指定的行之后,insertafter参数的值可以设置为EOF或者正则表达式,EOF为End Of File之意,表示插入到文档的末尾,默认情况下insertafter的值为EOF。如果将insertafter的值设置为正则表达式,表示将文本插入到匹配到正则的行之后,如果正则没有匹配到任何行,则插入到文件末尾 |
insertbefore | 借助insertbefore参数可以将文本插入到“指定的行”前,insertbefore参数的值可以设置为BOF或者正则表达式,BOF为Begin Of File之意,表示插入到文档的开头,如果将insertbefore的值设置为正则表达式,表示将文本插入到匹配到正则的行之前,如果正则没有匹配到任何行, 则插入到文件末尾 |
backup | 是否在修改文件之前对文件进行备份。 |
create | 当要操作的文件并不存在时,是否创建对应的文件。 |
#使用line参数默认插入到文件末尾:
ansible testB -m lineinfile -a 'path=/testdir/test line="@@test@@"'
#删除:
ansible testB -m lineinfile -a 'path=/testdir/test line="@@test@@" state=absent'
#使用regexp参数替换文本时,当有多行文本都能被匹配,只有最后被匹配到的行才会被替换:
ansible testB -m lineinfile -a 'path=/testdir/test regexp="^line" line="##test##"'
#使用regexp参数删除文本时,当有多行文本都能被匹配,这些行都会被删除:
ansible testB -m lineinfile -a 'path=/testdir/test regexp="^line" state=absent'
#使用insertafter插入文本到指定行后:
ansible testB -m lineinfile -a 'path=/testdir/test insertafter="^#" line="insertafter"
find模块
find模块可以班帮助我们再远程主机中查找符合条件的文件,就像find命令一样
find模块参数 | |
---|---|
paths | 必须参数,指定在哪个目录中查找文件,可以指定多个路径,路径间用逗号隔开,此参数有别名,使用别名paths或者别名name可以代替paths。 |
recurse | 默认情况下,只会在指定的目录中查找文件,也就是说,如果目录中还包含目录,ansible并不会递归的进入子目录查找对应文件,如果想要递归的查找文件,需要使用recurse参数,当recurse参数设置为yes时,表示在指定目录中递归的查找文件。 |
hidden | 默认情况下,隐藏文件会被忽略,当hidden参数的值设置为yes时, 才会查找隐藏文件。 |
file_ type | 默认情况下,ansible只会根据条件查找"文件",并不会查找"目录"或"软链接"等文件类型,如果想要指定查找的文件类型,可以通过file_type指定文件类型,可指定的文件类型有any、directory、 file、 link 四种。 |
patterns | 使用此参数指定需要查找的文件名称,支持使用shell(比如通配符)或者正则表达式去匹配文件名称,默认情况下,使用shell匹配对应的文件名,如果想要使用python的正则去匹配文件名,需要将use_ regex参数的值设置为yes。 |
contains | 使用此参数可以根据文章内容查找文件,此参数的值为一个正则表达式,find模块会根据对应的正则表达式匹配文件内容。 |
age | 使用此参数可以根据时间范围查找文件,默认以文件的mtime为准与指定的时间进行对比, 比如,如果想要查找mtime在3天之前的文件,那么可以设置age=3d,如果想要查找mtime在3天以内的文件,可以设置fage=-3d,这里所说的3天是按照当前时间往前推3天,可以使用的单位有秒(s)、分(m)、时(h)、天(d)、星期(w)。 |
age_ stamp | 文件的时间属性中有三个时间种类,atime、ctime、mtime,,当我们根据时间范围查找文件时,可以指定以哪个时间种类为准, 当根据时间查找文件时,默认以mtime为准。 |
use_ regex | 默认情况下,find模块不会使用正则表达式去解析patterns参数中对应的内容,当use_ regex设置为yes时,表示使用python正则解析patterns参数中的表达式,否则,使用glob通配符解析patterns参数中的表达式。 |
size | 使用此参数可以根据文件大小查找文件,比如,如果想要查找大于3M的文件,那么可以设置isize=3m,如果想要查找小于50k的文件,可以设tsize=-50k,可以使用的单位有t、g、m、k、b。 |
get_checksum | 当有符合查找条件的文件被找到时,会同时返回对应文件的sha1校验码,如果要查找的文件比较大,那么生成校验码的时间会比较长 |
#在/testdir目录中查找内容含有hello的文件:
ansible testB -m find -a 'paths=/testdir contains=".*hello.*"'
#在远程主机中创建测试文档:
ansible testB -m find -a 'paths=/testdir contains=".*hello.*"'
#在/testdir目录及其子目录下查找内容含有hello的文件(recurse=yes包含子目录):
ansible testB -m find -a 'paths=/testdir contains=".*hello.*" recurse=yes'
#在/testdir目录中查找文件名以.sh结尾的文件(hidden=yes包含隐藏文件):
ansible testB -m find -a 'paths=/testdir patterns="*.sh" hidden=yes'
#在/testdir目录中查找文件名以.sh结尾的任意类型的“文件”(hidden=yes包含隐藏文件):
ansible testB -m find -a 'paths=/testdir patterns="*.sh" file_type=any hidden=yes'
#在以文件名查找时,使用正则表达式匹配(use_regex=yes):
ansible testB -m find -a 'paths=/testdir patterns=".*\.sh" use_regex=yes file_type=any hidden=yes'
#指定时间范围查找文件,在/testdir目录及其子目录下查找2小时内创建的文件(age=-2h表示mtime在2小时内):
ansible testB -m find -a 'paths=/testdir age=-2h recurse=yes'
#指定时间种类,在/testdir目录及其子目录下查找2天内被访问过的文件(age_stamp=atime指定时间种类):
ansible testB -m find -a 'paths=/testdir age=-2d age_stamp=atime recurse=yes'
#指定文件大小范围查找文件,在/testdir目录及其子目录下查找大于1g的文件(size=1g大于1g):
ansible testB -m find -a 'paths=/testdir size=1g recurse=yes'
#当有符合条件的文件被找到时,返回sha1校验码:
ansible testB -m find -a 'paths=/testdir contains=".*hello.*" get_checksum=yes recurse=yes'
replace&command&shell
replace模块
replace模块可以根据我们指定的正则表达式替换文件中的字符串,文件中所有被正则匹配到的字符串都会被替换
replace模块参数 | |
---|---|
path | 必须参数,指定要操作的文件 |
regexp | 必须参数,指定一个python正则表达式,文件中与正则匹配的字符串将会被替换。 |
replace | 指定最终要替换成的字符串。 |
backup | 是否在修改文件之前对文件进行备份,最好设为yes |
#指定正则表达式替换某个字符串(匹配到的字符串都会被替换):
ansible testB -m replace -a 'path=/testdir/test regexp="USE" replace=use'
#指定正则表达式替换某个字符串(替换前进行备份):
ansible testB -m replace -a 'path=/testdir/test regexp="use" replace=USE backup=yes'
command模块
command模块可以帮助我们在远程主机上执行命令
注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,
如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效,比如"<", “>”, “I”, ";“和”&"这些符号,
如果你需要这些功能,可以参考后面介绍的shell模块,还有一点需要注意,如果远程节点是windows操作系统,则需要使用win_
command模块
command模块参数 | |
---|---|
chdir | 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。 |
creates | 看到creates,你可能会从字面上理解这个参数,但是使用这个参数并不会帮助我们创建文件,它的作用是当指定的文件存在时,就不执行对应命令,比如:如果/testdir/test文件存在,就不执行我们指定的命令。 |
removes | 与creates参数的作用正好相反,它的作用是当指定的文件不存在时,就不执行对应命令, 比如:如果/testdir/tests文件不存在,就不执行我们指定的命令,此参数并不会帮助我们删除文件 |
command模块应用
#指定命令ls:(默认访问家目录)
ansible testB -m command -a "ls"
#chdir参数指定目录:
ansible testB -m command -a "chdir=/testdir ls"
#当指定文件存在时,就不输出test:
ansible testB -m command -a "creates=/testdir/test echo test"
#当指定文件不存在时,就不输出test(即存在时输出):
ansible testB -m command -a "removes=/testdir/test echo test"
shell模块
shell模块可以帮助我们在远程主机上执行命令,与command模块不同的是,shell模块在远程主机中执行命令时,会经过远程主机上的/bin/sh程序处理。
shell模块参数 | |
---|---|
chdir | 此参数的作用就是指定一个目录,在执行对应的命令之前,会先进入到chdir参数指定的目录中。 |
creates | 使用此参数指定一个文件,当指定的文件存在时,就不执行对应命令,可参考command模块中的解释。 |
removes | 使用此参数指定一个文件,当指定的文件不存在时,就不执行对应命令,可参考command模块中的解释。 |
executable | 默认情况下,shell模块会调用远程主机中的/bin/sh去执行对应的命令,通常情况下,远程主机中的默认shelI都是bash,如果你想要使用其他类型的shell执行命令,则可以使用此参数指定某种类型的shell去执行对应的命令,指定shell文件时,需要使用绝对路径。 |
支持重定向、管道符等操作:
ansible testB -m shell -a "chdir=/testdir echo haha> test"
script&cron&service
script模块
script模块可以帮助我们在远程主机上执行ansible主机上的脚本,也就是说,脚本一直存在于ansible主机本地,
不需要手动拷贝到远程主机后再执行。
script模块参数 | |
---|---|
chdir | 此参数的作用就是指定一个远程主机中的目录,在执行对应的脚本之前,会先进入到chdir参数指定的目录中。 |
creates | 使用此参数指定-一个远程主机中的文件,当指定的文件存在时,就不执行对应脚本,可参考command模块中的解释。 |
removes | 使用此参数指定一个远程主机中的文件,当指定的文件不存在时,就不执行对应脚本,可参考command模块中的解释 |
script模块应用
#在远程主机中执行本地主机脚本:
ansible testB -m script -a "chdir=/opt /testdir/test.sh"
#当指定文件存在时,就不执行脚本:
ansible testB -m script -a "creates=/mnt/test /testdir/test.sh"
#当指定文件不存在时,就不执行脚本:
ansible testB -m script -a "removes=/mnt/test /testdir/test.sh"
cron模块
cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令
cron模块参数 | |
---|---|
minute | 此参数用于设置计划任务中分钟设定位的值,比如,分钟设定位的值为5,即minute=5,当不使用此参数时,分钟设定位的值默认为11*11 |
hour | 此参数用于设i计划任务中小时设定位的值,比如,小时设定位的值为1,即hour=1,当不使用此参数时,小时设定位的值默认为"*" |
day | 此参数用于设置i计划任务中日设定位的值,当不使用此参数时,日设定位的值状认为"*" |
month | 此参数用于设量置计划任务中月设定位的值,当不使用此参数时,月设定位的值状认为"*" |
weekday | 此参数用于设置计划任务中周几设定位的值,当不使用此参数时,周几设定位的值默认为"*" |
special time | 计划任务的时间设定格式为@reboot或者@hourly,@reboot表示重启时执行,@hourly表示每小时执行一次,相当于设置成"0****",这种@开头的时间设定格式则需要使用special_ time参数进行设置,special time参数的可用值有reboot(重启后)、yearly(每年)、annually(每年,与yearly相同、monthly(每月)、weekly(每周)、daily(每天)、hourly(每时) |
user | 此参数用于设置当前计划任务属于哪个用户,当不使用此参数时, 默认为管理员用户 |
job | 此参数用于指定计划的任务中需要实际执行的命令或者脚本cron表达式只关注有值的部分,*的部分可以忽略,但是一定要符合6个参数的格式 |
name | 此参数用于设计划任务的名称,计划任务的名称会在注释中显示,当不指定计划任务的名称时,ansible会默认为计划任务加入注释 |
state | 当计划任务有名称时,我们可以根据名称修改或删除对应的任务,当删除计划任务时,需要将state的值设置为absent |
disabled | 当计划任务有名称时,我们可以根据名称使对应的任务"失效"(注释掉对应的任务)。注意:使用此参数时,除了需要指定任务的名称,还需要同时指定任务的job以及任务的时间设定,而且任务的时间设定必须和对应任务完全相同,否则在注释任务的同时,任务的时间设定会被修改 |
backup | 如果此参数的值设置为yes,那么当修改或者删除对应的计划任务时,会先对计划任务进行备份,然后再对计划任务进行修改或者删除,cron模块会在远程主机的/tmp目录下创建备份文件,以crontab开头并且随机加入一些字符,具体的备份文件名称会在返回信息的backup_ file字段中看到,推荐将此参数设置为yes |
cron模块应用
#每天的4点18分输出test,
ansible testB -m cron -a "name='test-westos' minute=18 hour=4 job='echo test'"
#每3天的4点1分输出test,任务名crontabl-test:
ansible testB -m cron -a "name='crontabl-test' minute=1 hour=4 day=*/3 job='echo test'"
#special_time=reboot在重启时输出test,任务名special_time_test:
ansible testB -m cron -a "name='special_time_test' special_time=reboot job='echo test'"
#当计划任务名存在时,执行不同的任务,系统会覆盖之前的任务:
ansible testB -m cron -a "name='special_time_test' special_time=reboot job='echo westos'"
#当计划任务名存在时,执行不同的任务,系统在覆盖之前的任务之前备份,结果中会提示将之前的任务放在了/tmp/crontabGy9IMA中,查看/tmp/crontabGy9IMA
ansible testB -m cron -a "name='special_time_test' special_time=reboot job='echo test' backup=yes"
#针对指定用户创建计划任务(special_time=hourly每小时一次):
ansible testB -m cron -a "user=nigar name='special_time_nigar' special_time=hourly job='echo test'"
#注释掉对应任务(结合备份):
ansible testB -m cron -a "name='crontabl-test' minute=1 hour=4 day=*/3 job='echo test' disabled=yes backup=yes"
service模块
service模块可以帮助我们餐管理远程主机.上的服务,比如,启动或停止远程主机中的apache服务
service模块参数 | |
---|---|
name | 此参数用于指定需要操作的服务名称,比如httpd |
state | 此参数用于指定服务的状态,比如:我们想要启动远程主机中的httpd,则可以将state的值设置为started,要停止远程主机中的服务,则可以将state的值设置为stopped。此参数的可用值有started、stopped、restarted、 reloaded。 |
enabled | 此参数用于指定是否将服务设为开机启动项,设置为yes表示将对应服务设置为开机启动,设置为no表示不会开机启动 |
#开启远程主机的http服务:
ansible testB -m service -a "name=httpd state=started"
#关闭远程主机的http服务:
ansible testB -m service -a "name=httpd state=stopped"
#设置远程主机http服务开机启动:
ansible testB -m service -a "name=httpd enabled=yes"
#设置远程主机http服务开机不启动:
ansible testB -m service -a "name=httpd enabled=no"
user&group
user模块
user模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等
user模块参数 | |
---|---|
name | 必须参数,用于指定要操作的用户名称,可以使用别名user。 |
group | 此参数用于指定用户所在的基本组 |
gourps | 此参数用于指定用户所在的附加组,注意:如果说用户已经存在并且已经拥有多个附加组,那么如果想要继续添加新的附加组,需要结合append参数使用,否则在默认情况下,当再次使用groups参数设置附加组时,用户原来的附加组会被覆盖。 |
append | 如果用户原本就存在多个附加组,那么当使用groups参数设置附加组时,当前设置会盖原来的附加组设置,如果不想覆盖原来的附加组设置,需要结合append参数,将append设置为yes,表示追加附加组到现有的附加组设置,append默认值为no |
shell | 此参数用于指定用户的默认shell |
uid | 此参数用于指定用户的uid号 |
expires | 此参数用于指定用户的过期时间,相当于设置/etc/shadow文件中的的第8列,比如:你想要设置用户的过期日期为2020年12月31日,那么你首先要获取到2020年12月31日的unix时间戳,使用命令"date-d2020-12-31 +%s"获取到的时间戳为1609344000,所以,当设fexpires=1609344000时,表示用户的过期时间为2020年12月31日0点0分,设成功后,查看远程主机的/etc/shadow文件,对应用户的第八列的值将变成18626 (表示1970年1月1日到2020年12月31日的天数,unix时间戳的值会自动转换为天数,我们不用手动的进行换算),目前此参数只支持在Linux和EreeBSD系统中使用 |
comment | 此参数用于指定用户的注释信息 |
state | 此参数用于指定用户是否存在于远程主机中,可选值有present、absent,默认值为present,表示用户需要存在,当设为absent时表示删除用户。 |
remove | 当state的值设置为absent时,表示要删除远程主机中的用户,但是在删除用户时,不会删除用户的家目录等信息,这是因为remoove参数的默认值为no。如果设置为yes,在删除用户的同时,会删除用户的家目录,当state=absent并且remove=yes时,相当于执行"userdel -r"命令 |
password | 此参数用于指定用户的密码,但是这个密码不能是明文的密码,而是一个对明文密码"加密后"的字符串,相当于/etc/shadow文件中的密码字段,是一个对明文密码进行哈希后的字符串,你可以在python的命令提示符下输入如下命令,生成明文密码对应的加密字符串: import crypt crypt.crypt(‘666666’)输入上述命令后,即可得到明文密码666666对应的加密字符串 |
update_password | 此参数有两个值可选:always和on_create,当此参数的值设置为always时表示如果password参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为always。但是当此参数设置为on_create时,如果password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定,如果是新创建的用户,即使此参数设为on_create,也会将用户的密码设置为password参数对应的值 |
user模块应用
#给远程主机新建用户:
ansible testB -m user -a "name=yy"
#删除远程主机用户(只删除用户,不删除对应文件):
ansible testB -m user -a "name=yy state=absent"
#删除远程主机用户(完全删除):
ansible testB -m user -a "name=yy state=absent remove=yes"
#设定主组:
ansible testB -m user -a "name=yy group=ansible"
#附加组存在时设定附加组,系统会覆盖以前的组:
ansible testB -m user -a "name=yy groups=redhat"
#附加组存在时设定附加组,但不覆盖之前的:
ansible testB -m user -a "name=yy groups=linux append=yes"
#同时设定多个附加组(用逗号隔开):
ansible testB -m user -a "name=yy groups=shell,python append=yes"
#设定用户过期时间(例如2020-12-31过期):
#首先要获得unix时间戳:
date -d 2020-12-31 +%s
ansible testB -m user -a "name=yy expires=1609344000"
#指定用户注释信息:
ansible testB -m user -a "name=yy comment='www.westos'"
#指定用户密码:
#首先要获得明文密码的加密字符串:
ansible testB -m user -a "name=yy password='$6$GzCr4RUlgDfyuEdQ$Z33AW8V6HAGwTaOeu0ATSf8vCRXnqyRnUjo.q6lpS5G1k7U1cdPhewEmbG7cKLwLWax0VzFbd1lm7MsRT4P.w.'"
#生成密钥:
ansible testB -m user -a "name=yy generate_ssh_key=yes"
#指定密钥文件路径及文件名:
ansible testB -m user -a "name=yy generate_ssh_key=yes ssh_key_file=/opt/id_rsa_yy"
group模块
group模块可以帮助我们管理远程主机上的组
group模块参数 | |
---|---|
name | 必须参数,用于指定要操作的组名称。 |
state | 用于指定组的状态,两个值可选,present、absent;默认为present,设置为absent表示删除组。 |
gid | 用于指定组的gid |
#给远程主机新建组:
ansible testB -m group -a "name=java"
#删除远程主机中的组:
ansible testB -m group -a "name=java state=absent"
#当组为某一用户附加组时,可以正常删除,当组为某一用户主组时,无法删除
ansible testB -m group -a "name=linux state=absent"
#设定组的gid,注意:当组不存在时,系统会直接创建组并且设定gid;当组存在时,会覆盖原来的gid
ansible testB -m group -a "name=test gid=8888"
yum_repository&yum
yum_repository模块
yum_ repository模块可以帮助我们管理远程主机上的yum仓库
yum_repository模块参数 | |
---|---|
name | 必须参数,用于指定要操作的唯一的仓库ID,也就是".repo"配置文件中每个仓库对应的"中括号"内的仓库ID |
baseurl | 此参数用于设置yum仓库的baseurl |
description | 此参数用于设置仓库的注释信息,也就是".repo"配置文件中每个仓库对应的"name字段"对应的内容。 |
file | 此参数用于设置仓库的配置文件名称,即设置".repo"配置文件的文件名前缀,在不使用此参数的情况下,默认以name参数的仓库ID作为".repo"配文件的文件名前缀,同一个’ .repo’配置文件中可以存在多个yum源 |
enabled | 此参数用于设置是否激活对应的yum源,此参数状认值为yes,表示启用对应的yum源,设置为no表示不启用对应的yum源。 |
gpgcheck | 此参数用于设置是否开启rpm包验证功能,默认值为no,表示不启用包验证,设置为yes表示开启包验证功能 |
state | 默认值为present, 当值设置为absent时,表示删除对应的yum源 |
#给远程主机批量配置yum源:
ansible testA -m yum_repository -a 'name=rhel7.5 description="ansible rhel7.5" baseurl=http://172.25.254.36/rhel7.5 gpgcheck=no enabled=yes'
#删除远程主机中指定的yum源:
ansible testA -m yum_repository -a 'name=rhel7.5 description="ansible rhel7.5" baseurl=http://172.25.254.36/rhel7.5 gpgcheck=no enabled=yes state=absent'
查看到yum源可用:
yum模块
yum模块可以帮助我们在远程主机上通过yum源管理软件包
yum模块参数 | |
---|---|
name | 必须参数,用于指定需要管理的软件包 |
state | 用于指定软件包的状态,默认值为present,表示确保软件包已经安装,除了present,其他可用值有:installed、latest、absent、removed。其中installed与present等效,latest表示安装yum中最新的版本,absent和removed等效,表示删除对应的软件包。 |
disable_ gpg_check | 用于禁用对rpm包的公钥gpg验证,默认值为no,表示不禁用验证,设置为yes表示禁用验证,即不验证包,直接安装,在对应的yum源没有开启gpg验证的情况下,需要将此参数的值设置为yes,否则会报错而无法进行安装 |
#给远程主机批量安装http(三个命令作用相同):
ansible testA -m yum -a "name=httpd"
ansible testA -m yum -a "name=httpd state=present"
ansible testA -m yum -a "name=httpd state=installed"
#卸载远程主机中的http(两个命令作用相同):
ansible testA -m yum -a "name=httpd state=absent"
ansible testA -m yum -a "name=httpd state=removed"
#先将两个yum源中的gpgcheck设定注释掉,给远程主机批量安装gcc(发现报错):
ansible testA -m yum -a "name=gcc"
#此时就需要设定disable_gpg_check参数(安装成功):
ansible testA -m yum -a "name=gcc disable_gpg_check=yes"
unarchive&archive&mount
unarchive模块
copy | copy=no为源tar包从被控端解压。 copy=tes 为源tar包从主控端解压 |
src | 源tar包路径 |
dest | 解压到的目标位置 |
mode | 解压后的文件权限 |
#解压软件包
ansible db -m unarchive -a 'src=/root/tmp.tar.gz dest=/root copy=no'
archive模块
path | 源路径,准备打包的文件 |
dest | 打成什么格式的包,放到什么位置 |
mode | 权限 |
#打包
ansible db -m archive -a 'path=/tmp/*.txt dest=/root/tmp.tar.gz'
mount模块
永久性,临时性挂载某个文件
fstype | 指定挂载文件的系统类型,必须指定 |
path | 定义挂载到哪个目录,必须指定 |
src | 定义挂载内容 |
state | 挂载状态 |
mounted进行挂载,修改/etc/fstab信息 | |
unmounted临时卸载,不修改/etc/fstab信息 | |
absent永久性卸载,并修改 /etc/fstab信息 |
setup
setup模块
用于收集远程主机的一些基本信息
#获取所有主机信息
ansible all -m setup
# IPV4 地址
ansible all -m setup -a "filter=ansible_all_ipv4_addresses"
#内存信息。
ansible all -m setup -a "filter=ansible_memory_mb"
#通过通配符实现模糊匹配,比如以”mb”关键字结尾的信息。
ansible all -m setup -a "filter=*mb"
其他主机参数 | |
---|---|
ansible_all_ipv4_addresses | 仅显示ipv4的信息。 |
ansible_devices | 仅显示磁盘设备信息。 |
ansible_distribution | 显示是什么系统,例:centos,suse等。 |
ansible_distribution_major_version | 显示是系统主版本。 |
ansible_distribution_version | 仅显示系统版本。 |
ansible_machine | 显示系统类型,例:32位,还是64位。 |
ansible_eth0 | 仅显示eth0的信息。 |
ansible_hostname | 仅显示主机名。 |
ansible_kernel | 仅显示内核版本。 |
ansible_lvm | 显示lvm相关信息。 |
ansible_memtotal_mb | 显示系统总内存。 |
ansible_memfree_mb | 显示可用系统内存。 |
ansible_memory_mb | 详细显示内存情况。 |
ansible_swaptotal_mb | 显示总的swap内存。 |
ansible_swapfree_mb | 显示swap内存的可用内存。 |
ansible_mounts | 显示系统磁盘挂载情况。 |
ansible_processor | 显示cpu个数(具体显示每个cpu的型号)。 |
ansible_processor_vcpus | 显示cpu个数(只显示总的个数)。 |
本文标签: ansible
版权声明:本文标题:Ansible部署及应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1732050119h1519097.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论