ansible 的简单使用格式:
Ansible 服务器 192.168.182.254
- ansible HOST-PATTERN -m MOD_NAME -a MOD_ARGS
- ansible <host-pattern> [-m module_name] [-a args] [options]
ansible 的常用模块:
获取所有模块列表;
ansible-doc -l
获取模块参数:
ansible-doc -s module_name
command 模块: 在远程主机运行命令; 模块可省略, 默认为 command 模块.
例如:
ansible test -a "adduser test1" 添加用户
shell 模块: 在远程主机在 shell 进程下运行命令, 支持 shell 的特性, 如管道, 重定向等; 会在子 shell 中运行命令
例如:
ansible test -a "echo"123123"| passwd --stdin test1" 批量修改密码
copy 模块: Copies files to remote locations. 复制本地文件至远程服务器, 并且能够改属性等
用法:
(1)src= dest=
src = 源文件路径, 可以使用绝对路径也可以使用相对路径, 如果路径是一个目录, 递归的复制目录;, 如果路径以 "/" 结束, 只有在该目录的内容复制到目的地. 否则, 如果它不以 "/" 结束, 与所有内容复制目录本身;
dest = 远程路径, 必须是绝对路径, 如果 src 是目录, dest 一定也是目录
例如:
- ansible test -m copy -a 'src=/etc/fstab dest=/tmp/fstab'
- (2)content= dest=
owner=,group=,mode= 可以指明目标文件的属主, 属组, 权限
content = 源文件, 是将数据流覆盖填充到 dest = 远程目标文件中;
例如:
ansible test -m copy -a 'content="hello there\n"mode=400 dest=/tmp/tmpfile'
注意: 单引号和双引号的嵌套;
cron: 管理任务计划
- minute=( 0-59, , /2, etc )
- day=( 1-31, , /2, etc )
- month=( 1-12, , /2, etc )
- weekday=( 0-6 for Sunday-Saturday, , etc )
- hour=( 0-23, , /2, etc )
- job= #需要执行的任务
- name= #必须给的选项
- state=
present: 创建
absent: 删除
例如:
添加任务计划:
ansible all -m cron -a "minute=/5 job='/sbin/ntpdate 172.16.0.1 &> /dev/null'name=Synctime"
删除任务计划:
ansible all -m cron -a "t name=Synctime"
查看任务计划的命令: crontab -l
真实的位置在:/var/spool/cron 下面
fetch 模块: 从远程主机上获取文件到本地主机, 只能 fetch 文件, 不能 fetch 目录;
dest = 本地主机的目录, 只能是目录, 拉取文件到本地时会以 IP 为目录名, 在其中保留文件的目录结构, 通常用来备份;
src = 只能是远程主机上的文件, 不能是目录
例如:
ansible all -m fetch -a "src=/tmp/test/123 dest=/tmp/"
file 模块: 设置文件属性
用法:
(1) 创建链接文件: path = 目标路径 (必给项) src = 源文件 state=link
例如:
ansible all -m file -a "src=/tmp/fstab path=/tmp/fstab.link state=link"
(2) 修改属性: path= owner= mode= group=
(3) 创建目录: path= state=directory
例如:
ansible all -m file -a "path=/tmp/test state=directory"
注意: 创建目录可递归创建.
hostname 模块: 管理主机名
name=
pip 模块: Python 的包管理工具
yum 模块: yum 程序包管理
name=: 程序包名称, 可以带版本号
- state=
- present,latest
- absent
例如:
安装软件包
- ansible all -m yum -a "name=lrzsz"
- ansible all -m yum -a "name=httpd"
删除软件包:
ansible all -m yum -a "name=lrzsz state=absent"
service 模块: 管理服务
name=
state=
started: 启动
stopped: 停止
restarted: 重启
enabled = 是否开机启动
runlevel=
例如:
ansible all -m service -a "name=httpd state=started"
url 模块:
user 模块: 管理用户账号
- name=
- system={yes|no}
- uid=
shell= 可选设置默认 shell, 默认为 / bin/bash
group=
groups=
comment= 可选设置描述, 默认为空
home= 可选设置家目录, 默认创建目录
state=
present 创建
absent 删除
setup 模块: 用来获取 facts 变量
group 模块: 用来添加或删除组
- name= (必给的)
- state=
- present
- absent
- system=
- gid=
script 模块: 执行脚本
-a "/PATH/TO/SCRIPT_FILE"
template 模块: 基于模板方式生成一个文件复制到远程主机
- src=
- dest=
- owner=
- group=
- mode=
等等
来源: http://www.bubuko.com/infodetail-2621992.html