Ansible #
ansible命令用例 #
帮助文档 #
显示 yum 模块的帮助文档。
bash
ansible-doc -s yum
模块参数 #
列出匹配的主机。
bash
ansible all --list
ansible hp-\* --list
以指定用户身份运行指令。
bash
ansible hp -m shell -a 'ls -a ~' -b --become-user deploy
-m MODULE_NAME, --module-name MODULE_NAME
: 指定模块名称-a MODULE_ARGS, --args MODULE_ARGS
: 指定模块参数-b, --become
: 启用become。--become-user USER
: 指定become用户。--become-method METHOD
: 指定become方式,sudo、su、pbrun、pfexec、runas等等。
ping模块 #
检查指定节点是否能连通。
bash
ansible hp -m ping
copy模块 #
把主控端/root/a.sh文件复制到指定节点上。
bash
ansible hp -m copy -a 'src=/root/a.sh dest=/opt/'
file模块 #
更改指定节点上/tmp/t.sh的权限为755,属主和属组为root。
bash
ansible hp -m file -a "dest=/opt/monitor.py mode=755 owner=root group=root"
cron模块 #
在指定节点上执行一个定时任务,每隔3分钟执行一次脚本。
bash
ansible hp -m cron -a 'name="custom job" minute=*/3 hour=* day=* month=* weekday=* job="/tmp/t.sh -abc"'
group模块 #
在指定节点上创建组deploy,gid为2014。
bash
ansible hp -m group -a 'name=deploy gid=2014'
user模块 #
在指定节点上创建用户deploy,属组为deploy。
bash
ansible hp -m user -a 'name=deploy groups=deploy state=present'
script模块 #
在指定节点上执行脚本(脚本位于主控节点上)。
bash
ansible hp -m script -a '/root/a.sh'
shell/command/raw 模块 #
在指定节点上执行命令。
bash
ansible hp -m command -a 'cat /opt/t.md'
- shell: 调用/bin/sh执行,可以使用环境变量,也支持变量和操作符(如,“| < > &”)。
- command: 直接执行一条命令,不是调用shell的指令,所以没有环境变量,也不支持管道和重定向。
- raw: 直接通过ssh执行命令,目标机器不需要安装python。
get_url模块 #
下载文件到指定节点上。
bash
ansible hp -m get_url -a 'url=https://a.b.c/123 dest=/tmp/'
synchronize模块 #
目录与文件同步(主控和目标主机必须都安装rsync)。
bash
ansible hp -m synchronize -a 'src=/root/testdir dest=/opt/ mode=pull delete=yes'
- mode: pull/push。在pull模式中,远程主机是源。默认push。
- archive: 是否采用归档模式同步,保证文件属性一致。默认:yes。
- dirs: 是否非递归方式传送目录。默认:no。
- recursive: 是否递归。
- delete: 是否删除目标地址中多余的文件。
- existing_only: 是否忽略新文件。默认:no。
- links: 是否复制链接而非内容。
- rsync_timeout: rsync命令执行超时时间。单位:秒。
- rsync_opts=–exclude=.log 忽略后缀为log日志文件。