常用参数:
name #必选项,服务名称;
state #对当前服务执行启动,停止、重启、重新加载等操作(started, stopped, restarted, reloaded);
enabled #是否开机启动yes|no;
pattern #定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行;
runlevel #运行级别;
arguments #给命令行提供一些选项;
sleep #如果执行了restarted,在则stop和start之间沉睡几秒钟;
六)cron模块
用于管理计划任务,实例如下:
管理节点:
受控节点:
管理节点:
受控节点:
管理节点:
受控节点:
管理节点:
受控节点:
管理节点:
常用参数:
name #该任务的描述;
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;
special_time #指定什么时候执行,参数:reboot(重启时),yearly(每年),annually,monthly,weekly,daily,hourly;
state #确认该任务计划是创建还是删除;
user #以哪个用户的身份执行;
七)yum模块
使用yum包管理器来管理软件包,实例如下:
1.安装最新版本的apache
2. 移除apache
3. 升级所有的软件包
4. 安装整个Development tools 相关的软件包
5. 从本地仓库安装
ansible test -m yum -a 'name=/usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present'
6. 从远程仓库安装
ansible test -m yum -a 'name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present'
常用参数:
name #要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm包的路径;
config_file #yum的配置文件;
disable_gpg_check #关闭gpg_check;
disablerepo #不启用某个源;
enablerepo #启用某个源;
state #用于描述安装包最终状态,<em>present/latest</em>用于安装包,<em>absent</em>用于卸载安装包。
八)、user模块
用户管理模块,使用实例:
结果:
常用参数:
home #指定用户的家目录,需要与createhome配合使用;
comment #此参数用于指定用户的注释信息
groups #指定用户的属组;
uid #指定用的uid;
password #指定用户的密码;
name #指定用户名;
createhome #是否创建家目录yes|no;
system #是否为系统用户;
remove #当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r;
state #是创建还是删除;
shell #指定用户的shell环境;
state #此参数用于指定用户是否存在于远程主机中,可选值有present、absent,默认值为present,表示用户需要存在,当设置为absent时表示删除用户
gid #指定gid;
name #指定组名称;
state #操作状态,present,absent;
system #是否为系统组;
十) filesystem模块
在块设备上创建文件系统,实例如下:
$ ansible test -m filesystem -a 'fstype=ext2 dev=/dev/sdb1 force=yes'
$ ansible test -m filesystem -a 'fstype=ext4 dev=/dev/sdb1 opts="-cc"'
常用参数:
dev #目标块设备;
force #在一个已有文件系统的设备上强制创建;
fstype #文件系统的类型;
opts #传递给mkfs命令的选项;
十一) mount模块
配置挂载点:
$ ansible test -m mount 'name=/mnt/dvd src=/dev/sr0 fstype=iso9660 opts=ro state=present'
$ ansible test -m mount 'name=/srv/disk src='LABEL=SOME_LABEL' state=present'
$ ansible test -m mount 'name=/home src='UUID=b3e48f45-f933-4c8e-a700-22a159ec9077' opts=noatime state=present'
$ ansible test -a 'dd if=/dev/zero of=/disk.img bs=4k count=1024'
$ ansible test -a 'losetup /dev/loop0 /disk.img'
$ ansible test -m filesystem -a 'fstype=ext4 force=yes opts=-F dev=/dev/loop0'
$ ansible test -m mount 'name=/mnt src=/dev/loop0 fstype=ext4 state=mounted opts=rw'
常用参数:
fstype #必选项,挂载文件的类型;
name #必选项,挂载点;
opts #传递给mount命令的参数;
src #必选项,要挂载的文件;
state #必选项;
present #只处理fstab中的配置;
absent #删除挂载点;
mounted #自动创建挂载点并挂载之;
umounted #卸载;
# Synchronization using rsync protocol on delegate host (push)
- synchronize:
src: /some/absolute/path/
dest: rsync://somehost.com/path/
delegate_to: delegate.host
# Synchronization using rsync protocol on delegate host (pull)
- synchronize:
mode: pull
src: rsync://somehost.com/path/
dest: /some/absolute/path/
delegate_to: delegate.host
# Synchronization without any --archive options enabled
- synchronize:
src: some/relative/path
dest: /some/absolute/path
archive: no
# Synchronization with --archive options enabled except for --recursive
- synchronize:
src: some/relative/path
dest: /some/absolute/path
recursive: no
# Synchronization with --archive options enabled except for --times, with --checksum option enabled
- synchronize:
src: some/relative/path
dest: /some/absolute/path
checksum: yes
times: no
# Synchronization without --archive options enabled except use --links
- synchronize:
src: some/relative/path
dest: /some/absolute/path
archive: no
links: yes
# Synchronization of two paths both on the control machine
- synchronize:
src: some/relative/path
dest: /some/absolute/path
delegate_to: localhost
# Synchronization of src on the inventory host to the dest on the localhost in pull mode
- synchronize:
mode: pull
src: some/relative/path
dest: /some/absolute/path
# Synchronization of src on delegate host to dest on the current inventory host.
- synchronize:
src: /first/absolute/path
dest: /second/absolute/path
delegate_to: delegate.host
# Synchronize two directories on one remote host.
- synchronize:
src: /first/absolute/path
dest: /second/absolute/path
delegate_to: "{{ inventory_hostname }}"
# Synchronize and delete files in dest on the remote host that are not found in src of localhost.
- synchronize:
src: some/relative/path
dest: /some/absolute/path
delete: yes
recursive: yes
# Synchronize using an alternate rsync command
# This specific command is granted su privileges on the destination
- synchronize:
src: some/relative/path
dest: /some/absolute/path
rsync_path: "su -c rsync"
# Example .rsync-filter file in the source directory
# - var # exclude any path whose last part is 'var'
# - /var # exclude any path starting with 'var' starting at the source directory
# + /var/conf # include /var/conf even though it was previously excluded
# Synchronize passing in extra rsync options
- synchronize:
src: /tmp/helloworld
dest: /var/www/helloworld
rsync_opts:
- "--no-motd"
- "--exclude=.git"