ansible

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日志文件。
2022年11月9日