ansible的参数及常用模块
参数:
查看帮助手册:ansible-doc -a
查指定模块的帮助:ansible-doc -s 模块名
ansible-doc -s setup 查看setup模块的帮助信息
ansible-doc -l
ansible-doc -s file
Options:
-a, --all Show documentation for all modules 显示所有模块
-C, --check don't make any changes; instead, try to predict some
检测并不发生改变,可以预测一些错误用于测试使用
-h, --help show this help message and exit 显示帮助信息并退出
-l, --list List available modules 列出所有可用模块列表
-M MODULE_PATH, --module-path=MODULE_PATH
specify path(s) to module library (default=None)
指定模块库的路径(默认值=None)
specify path(s) to module library (default=None)
-s, --snippet Show playbook snippet for specified module(s)
显示指定模块的playbook(剧本)代码段
-v, --verbose verbose mode (-vvv for more, -vvvv to enable
connection debugging)
详细显示(-vvv 表示更详细,-vvvv 启用连接调试)
--version show program's version number and exit
显示程序的版本号并退出
常用模块:
1.setup: 查看远程主机的基本信息
ansible 主机列表名称 -m setup
-m 指定使用的模块
主机列表名称是卸载 /etc/ansible/hosts 文件中的主机列表名称
或者
ansible 192.168.13.12 -m setup 查看指定ip的主机状态信息
2. ping: 测试远程主机的运行状态
ansible 主机列表名称 -m ping ping指定的主机列表名称中的主机
3.file: 设置文件属性
ansible 主机列表名称 -m file -a 'src=/etc/hosts dest=/tmp/hosts state=link'
ansible 主机列表名称 -m file -a 'path=/tmp/hosts state=absent'
ansible 主机列表名称 -m file -a 'path=/tmp/test state=touch'
-a 模块参数相当于命令
测试结果:ansible 主机列表名称 -m shell -a 'ls /tmp/'
选项:
force:需要在两种情况下强制创建软链接,一种是源文件不存在,但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no
group:定义文件/目录的属组
mode:定义文件/目录的权限
owner:定义文件/目录的属主
path:必选项,定义文件/目录的路径
recurse:递归设置文件的属性,只对目录有效,有两个选项:yes|no
src:被链接的源文件路径,只应用于state=link的情况
dest:被链接到的路径,只应用于state=link的情况
state:
directory:如果目录不存在,就创建目录
file:即使文件不存在,也不会被创建
link:创建软链接
hard:创建硬链接
touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
absent:删除目录、文件或者取消链接文件
4. copy: 把主控端的文件复制到远程主机
例:
ansible 主机列表名称 -m copy -a "src=/etc/hosts dest=/opt/hosts.bak owner=tom group=tom mode=0644"
ansible 主机列表名称 -m copy -a "src=/mine/ntp.conf dest=/etc/ntp.conf owner=root group=root mode=644 backup=yes"
测试结果:ansible 主机列表名称 -m shell -a 'ls -l /opt'
选项:
backup:在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no
content:用于替代“src”,可以直接设定指定文件的值
dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录
directory_mode:递归设定目录的权限,默认为系统默认权限
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes
others:所有的file模块里的选项都可以在这里使用
src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync
5.service模块:用于管理服务
例:
ansible 主机列表名称 -m service -a "name=httpd state=started enabled=yes"
asnible 主机列表名称 -m service -a "name=foo pattern=/usr/bin/foo state=started"
ansible 主机列表名称 -m service -a "name=network state=restarted args=eth0"
选项:
arguments:给命令行提供一些选项
enabled:是否开机启动 yes|no
name:必选项,服务名称
pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行
runlevel:运行级别
sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟
state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)
6.cron模块:用于管理计划任务
示例:
ansible 主机列表名称 -m cron -a 'name="a job for reboot" special_time=reboot job="/some/job.sh"'
ansible 主机列表名称 -m cron -a 'name="yum autoupdate" weekday="2" minute=0 hour=12 user="root
ansible 主机列表名称 -m cron -a 'backup="True" name="test" minute="0" hour="5,2" job="ls -alh > /dev/null"'
ansilbe 主机列表名称 -m cron -a 'cron_file=ansible_yum-autoupdate state=absent'
验证:ansible 主机列表名称 -m shell -a 'crontab -l'
选项:
backup:对远程主机上的原任务计划内容修改之前做备份
cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划
day:日(1-31,*,*/2,……)
hour:小时(0-23,*,*/2,……)
minute:分钟(0-59,*,*/2,……)
month:月(1-12,*,*/2,……)
weekday:周(0-7,*,……)
job:要执行的任务,依赖于state=present
name:该任务的描述
special_time:指定什么时候执行,参数:reboot,yearly,annually,monthly,weekly,daily,hourly
state:确认该任务计划是创建还是删除(absent)
user:以哪个用户的身份执行
7.yum模块:使用yum包管理器来管理软件包
例:
ansible 主机列表名称 -m yum -a 'name=httpd state=latest'
ansible 主机列表名称 -m yum -a 'name="@Development tools" state=present'
ansible 主机列表名称 -m yum -a 'name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present'
选项:
config_file:yum的配置文件
disable_gpg_check:关闭gpg_check
disablerepo:不启用某个源
enablerepo:启用某个源
name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径
state:状态(present or installed or latest,absent or removed)安装使用present installed latest 删除使用absent removed
present和installed安装套件 latest 安装最新的版本
8.user模块与group模块
user模块是请求的是useradd, userdel, usermod三个指令,goup模块请求的是groupadd, groupdel, groupmod 三个指令。
(1)、user模块
home:指定用户的家目录,需要与createhome配合使用
groups:指定用户的属组
uid:指定用的uid
password:指定用户的密码
name:指定用户名
createhome:是否创建家目录 yes|no
system:是否为系统用户
remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r
state:是创建还是删除
shell:指定用户的shell环境
expires参数:此参数用于指定用户的过期时间例如设置expires=1546185600 时,就是使用命令 date -d 2018-12-31 +%s 获取到的值
表示用户的过期时间为2018年12月31日0点0分,目前此参数只支持在 Linux 和 FreeBSD 系统中使用。
例:
ansible 主机列表名称 -m user -a 'name=johnd comment="John Doe" uid=1040 group=admin'
ansible 主机列表名称 -m user -a 'name=james shell=/bin/sh groups=adm,lp append=yes'
ansible 主机列表名称 -m user -a 'name=johnd state=absent remove=yes'
ansible 主机列表名称 -m user -a 'name=james18 shell=/bin/zsh groups=developers expires=1422403387'
(2)、group示例
ansible all -m group -a 'name=somegroup state=present'
all 表示列表里的所有主机
9. shell: shell命令
ansible默认使用的模块是command,支持多数shell命令,但不支持shell变量及管道,如果要使用需要使用shell模块
用shell模块给用户设置登录密码:
ansible all -m shell -a 'echo 01 | passwd --stdin james'
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。