Ad-Hoc 是指ansible下临时执行的一条命令,并且不需要保存的命令。
Ad-Hoc通过模块的方式来完成一些远程的管理工作。
Ad-Hoc不指定模块执行时,默认使用command模块,可以修改/etc/ansible/ansible.cnf配置中的“#module_name = command”字段。
-
查看所有模块
-
#ansible-doc -l
-
查看某个某块的参数具体用法
-
#ansible-doc -s module
-
查看该模块更详细的信息
-
#ansible-doc help module
1、setup(用于获取主机信息)
在playbook里经常会用到的一个参数gather_facts与该模块相关。
常用的参数filter。
-
远程主机的一些基本信息
-
#ansible test -m setup
-
或
-
#ansible -i /etc/ansible/hosts test -m setup
-
#ansible web1 -m setup -a 'filter=ansible_*_mb' #查看主机内存信息。
-
#ansible web1 -m setup -a 'filter=ansible_eth[0-1]' #查看网络接口为eth0-eth1的网卡信息。
-
#ansible web1 -m setup --tree /tmp/facts #将web1内主机信息输入到本地/tmp/facts目录下,每台主机的信息输入到主机名文件中(/etc/ansible/hosts里的主机名)。
-
# ll /tmp/facts/
-
-rw-r--r-- 1 root root 8844 6月 9 17:15 192.168.3.60
2、ping(测试主机连通性)
-
测试远程主机的运行状态
-
#ansible test -m ping
-
SSH password:
-
192.168.3.253 | SUCCESS => {
-
"changed": false,
-
"ping": "pong"
-
}
-
*与all一样
-
# ansible "*" -m ping
3、file(设置文件的属性)
包含以下模块:
force:需要在两种情况下强制创建软连接,一种是在源文件不存在但之后会建立的情况下;另一种是目标软连接已存在,需要先取消之前的软连接,再创建新的软连接,有两个选项:yes|no
group:定义文件/目录属组
mode:定义文件/目录权限
owner:定义文件/目录属主
path:必选项,定义文件/目录路径
recurse:递归设置文件的属性,只对目录有效
src:要被链接的源文件的路径,只应用于state=link情况
dest:被链接到的路径,只应用于state=link情况
state:file即使文件不存在,也不会被创建;
directory:如果目录不存在,创建目录;
link创建软连接;directory如果目录不存在,创建目录;
hard创建硬链接;
touch如果文件不存在,创建一个新文件,如果文件或目录存在,则更新其最后修改时间;
absent删除目录、文件或者取消链接文件。
-
将/root/test.sh文件软连接到test机器上的/tmp/test1.sh
-
#ansible test -m file -a "force=yes src=/root/test.sh dest=/tmp/test1.sh state=link"
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"dest": "/tmp/test1.sh",
"src": "/root/test.sh",
"state": "absent"
}
-
取消软连接文件/tmp/test2
-
#ansible test -m file -a "path=/tmp/test2 state=absent"
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"path": "/tmp/test2",
"state": "absent"
}
-
在被控机test上创建TEST文件
-
#ansible test -m file -a "path=/tmp/TEST state=touch"
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"dest": "/tmp/TEST",
"gid": 500,
"group": "kylinyunwei",
"mode": "0664",
"owner": "kylinyunwei",
"size": 0,
"state": "file",
"uid": 500
}
-
在被控机test上创建TEST1目录并添加属主、属组、权限。
-
#ansible test -m file -a "path=/tmp/TEST1 state=directory owner=root group=root mode=777"
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"gid": 500,
"group": "kylinyunwei",
"mode": "0775",
"owner": "kylinyunwei",
"path": "/tmp/TEST1",
"size": 4096,
"state": "directory",
"uid": 500
}
4、copy(复制文件到远程主机)
包含模块如下:
backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no;
content:用于替代“src”,可以直接指定文件的值;
dest:必选项,要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录;
directory_mode:递归的设定目录的权限,默认为系统默认权限;
force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机位置不存在该文件时才复制。默认为yes;
others:所有的file模块里的选项都可以在这里使用;
src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync;
validate: 复制前是否需要验证目的地
。
-
copy文件到远程主机test
-
#ansible test -m copy -a "src=/tmp/epel-release-6-8.noarch.rpm dest=/tmp/epel-release-6-8.noarch.rpm owner=ansible group=ansbible mode=0644"
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"checksum": "2b2767a5ae0de30b9c7b840f2e34f5dd9deaf19a",
"dest": "/tmp/epel-release-6-8.noarch.rpm",
"gid": 500,
"group": "ansbible",
"md5sum": "2cd0ae668a585a14e07c2ea4f264d79b",
"mode": "0644",
"owner": "ansbible",
"size": 14540,
"src": "/home/ansbible/.ansible/tmp/ansible-tmp-1462874038.53-70872648382321/source",
"state": "file",
"uid": 500
}
-
#ansible test -m copy -a "src=/root/test.sh dest=/tmp/test.sh owner=kylinyunwei group=kylinyunwei mode=0644 backup=yes"
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/tmp/test.sh",
"gid": 500,
"group": "kylinyunwei",
"md5sum": "d41d8cd98f00b204e9800998ecf8427e",
"mode": "0664",
"owner": "kylinyunwei",
"size": 0,
"src": "/home/kylinyunwei/.ansible/tmp/ansible-tmp-1462947628.32-110767092116356/source",
"state": "file",
"uid": 500
}
-
#ansible test -m copy -a "src=/tmp/test dest=/tmp/test validate='visudo -cf %s'"
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": false,
"checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
"dest": "/tmp/test",
"gid": 500,
"group": "kylinyunwei",
"mode": "0664",
"owner": "kylinyunwei",
"path": "/tmp/test",
"size": 0,
"state": "file",
"uid": 500
}
5、command(在远程主机上执行命令)
模块选项如下:
creates:一个文件名,当该文件存在,则该命令不执行;
free_form:要执行的linux指令;
chdir:在执行指令之前,先切换到该指定的目录;
removes:一个文件名,当该文件不存在,则该选项不执行;
executable:切换shell来执行指令,该执行路径必须是一个绝对路径
-
查看被控机test
-
#ansible test -a "ls /tmp"
-
-
查看被控机test的test.sh文件内容
-
# ansible test -a "more /tmp/test.sh"
-
SSH password:
192.168.3.253 | SUCCESS | rc=0 >>
"hello world"
"err.txt"
-
将被控机test上的压缩包解压到/tmp目录下
-
#ansible test -a 'tar -zxvf /opt/sh.tar.gz -C /tmp/'
-
SSH password:
192.168.3.253 | SUCCESS | rc=0 >>
eo.sh
test1.sh
test.sh
-
对192.168.3.253服务器以root执行sleep 10,设置最大连接超时时长为2s,且设置为后台运行模式,执行过程每2s输出一次进度,如5s还未执行完则中止该任务。
-
#ansible 192.168.3.253 -B 5 -P 2 -T 2 -m command -a 'sleep 10' -u root
-
-
开启防火墙3306访问权限
-
#ansible db -m command -a "iptables -A INPUT -s 192.168.3.0/24 -p tcp -m tcp --dport 3306 -j ACCEPT"
-
#ansible web1 -m command -a 'chdir=/tmp sh prestart.sh'
-
#ansible web1 -a 'creates=/tmp/test1 uptime'
-
#ansible web1 -a 'removes=/tmp/test1 uptime'
6、shell(切换到某个shell执行指令,参数与command相同)
-
执行被控机test上的脚本hello.sh并追加到文件hello.txt(hello.txt文件在ansible指定的远程用户的家目录下面)
-
#ansible test -m shell -a "/tmp/hello.sh >> hello.txt"
-
SSH password:
192.168.3.253 | SUCCESS | rc=0 >>
-
批量查看远程主机内存使用情况
-
#ansible test -m shell -a "free -m"
-
#ansible web1 -m shell -a 'chdir=/tmp sh prestart.sh'
-
#ansible lvse -u kylinyunwei -m shell -a "chdir=/Game/Script/Update sh check_version.sh"
-
#如果脚本里需要启动程序,必须在启动程序前加上nohup命令执行,否则ansible执行结束后程序也会挂掉。
7、service(用于服务管理)
包含如下选项:
arguments:给命令提供一些选项;
enabled:是否开机启动 yes|no;
name:必选项,服务名称;
pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行;
runlevel:运行级别;
sleep:如果执行了restarted,则在stop和start之间沉睡几秒钟;
state:对当前服务执行started、stopped、restarted、reloaded等操作;
-
关闭被控机test的httpd服务
-
#ansible test -m service -a "name=httpd state=stopped"
-
SSH password:
-
192.168.3.253 | SUCCESS => {
-
"changed": true,
-
"name": "httpd",
-
"state": "stopped"
-
}
-
# ansible test -m service -a "name=httpd state=restarted"
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"name": "httpd",
"state": "started"
}
使用root远程关闭nginx服务
-
# ansible test1 -m service -a "name=nginx state=stopped" -u root
-
SSH password:
192.168.3.248 | SUCCESS => {
"changed": true,
"name": "nginx",
"state": "stopped"
}
-
使用root远程开启nginx服务
-
# ansible test1 -m service -a "name=nginx state=started" -u root
-
SSH password:
192.168.3.248 | SUCCESS => {
"changed": true,
"name": "nginx",
"state": "started"
}
-
-
启动ntp服务,并设置为开机启动
-
#ansible test1 -m service -a “name=ntpd state=started enabled=yes”
8、cron(管理计划任务)
选项如下:
backup:对远程主机上的原计划任务内容修改之前做备份;
cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的计划任务;
minute、hour、day、month、weekday;
job:要执行的任务,依赖于state=present;
name:该任务的描述;
special_time:指定什么时候执行,参数:reboot、yearly、annually、monthly、weekly、daily、hourly;
state:确认该计划任务是创建还是删除;
user:以哪个用户的身份执行;
-
#在被控机test上添加一条计划任务说明“#Ansible: echo hello”;每一分钟执行一次echo hello追加到txt文件“1 * * * * echo hello >> txt”
-
#ansible test -m cron -a 'name="echo hello" minute="1" job="echo hello >> txt"'
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"jobs": [
"echo hello"
]
}
在被控机test上添加一条计划任务 每天0点30分执行eo.sh脚本
-
# ansible test -m cron -a 'name="sh /tmp/eo.sh" minute="30" hour="0" job="/tmp/eo.sh"'
-
SSH password:
192.168.3.253 | SUCCESS => {
"changed": true,
"jobs": [
"echo hello",
"sh /tmp/eo.sh"
]
}
-
# ansible web2 -m cron -a 'backup="True" name="test" minute="0" hour="2" job="ls -alh > /dev/null"'
-
#crontab -l #web2上查看计划任务
-
#Ansible: test
-
0 2 * * * ls -alh > /dev/null
9、filesystem(在块设备上创建文件系统)
选项如下:
dev:目标块设备;
force:在一个已有文件系统的设备上强制创建;
fstype:文件系统的类型;
opts:传递给mkfs命令的选项;
10、yum(使用yum包管理器管理软件包)
选项如下:
config_file:yum的配置文件;
disable_gpg_check:关闭gpg_check;
disablerepo:不启用某个源;
enablerepo:启用某个源;
list
name:要进行操作的软件包名字,也可以传递一个url或者一个本地rpm包的路径;
state:状态(present,absent,latest)
-
远程安装nginx
-
#ansible test -a 'sudo yum install nginx -y'
-
或
-
#ansible test -a 'yum install nginx -y' --sudo
-
-
# ansible test1 -m yum -a "name=httpd state=present" -u root
-
SSH password:
192.168.3.248 | SUCCESS => {
"changed": true,
"msg": " [Errno 14] PYCURL ERROR 6 - \"Couldn't resolve host 'nginx.org'\"\nTrying other mirror.\nwarning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY\nImporting GPG key 0xC105B9DE:\n Userid : CentOS-6 Key (CentOS 6 Official Signing Key) \n Package: centos-release-6-5.el6.centos.11.1.x86_64 (@anaconda-CentOS-201311272149.x86_64/6.5)\n From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6\n",
"rc": 0,
"results": [
"Loaded plugins: fastestmirror, security\nLoading mirror speeds from cached hostfile\n * base: mirrors.163.com\n * extras: mirror.bit.edu.cn\n * updates: mirror.bit.edu.cn\nSetting up Install Process\nResolving Dependencies\n--> Running transaction check\n---> Package httpd.x86_64 0:2.2.15-47.el6.centos.4 will be installed\n--> Processing Dependency: httpd-tools = 2.2.15-47.el6.centos.4 for package: httpd-2.2.15-47.el6.centos.4.x86_64\n--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-47.el6.centos.4.x86_64\n--> Running transaction check\n---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed\n---> Package httpd-tools.x86_64 0:2.2.15-47.el6.centos.4 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package Arch Version Repository Size\n================================================================================\nInstalling:\n httpd x86_64 2.2.15-47.el6.centos.4 updates 831 k\nInstalling for dependencies:\n apr-util-ldap x86_64 1.3.9-3.el6_0.1 base 15 k\n httpd-tools x86_64 2.2.15-47.el6.centos.4 updates 77 k\n\nTransaction Summary\n================================================================================\nInstall 3 Package(s)\n\nTotal download size: 924 k\nInstalled size: 3.1 M\nDownloading Packages:\n--------------------------------------------------------------------------------\nTotal 171 kB/s | 924 kB 00:05 \nRetrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6\nRunning rpm_check_debug\nRunning Transaction Test\nTransaction Test Succeeded\nRunning Transaction\n\r Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 1/3 \n\r Installing : httpd-tools-2.2.15-47.el6.centos.4.x86_64 2/3 \n\r Installing : httpd-2.2.15-47.el6.centos.4.x86_64 3/3 \n\r Verifying : httpd-2.2.15-47.el6.centos.4.x86_64 1/3 \n\r Verifying : httpd-tools-2.2.15-47.el6.centos.4.x86_64 2/3 \n\r Verifying : apr-util-ldap-1.3.9-3.el6_0.1.x86_64 3/3 \n\nInstalled:\n httpd.x86_64 0:2.2.15-47.el6.centos.4 \n\nDependency Installed:\n apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 \n httpd-tools.x86_64 0:2.2.15-47.el6.centos.4 \n\nComplete!\n"
]
}
-
-
yum指定某版本安装,其name参数指定具体版本地址。yum支持网络安装或本地安装。
-
网络安装:
-
#ansible test -m yum -a "name=nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present"
-
本地安装:
-
#ansible test -m yum -a "name=/usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present"
-
11、user(用户管理)
home、groups、uid、name、createhome、system、remove、state、shell、append等;
password:后面指定的密码不能是明文,这一串密码会被直接传送到被管理主机的/etc/shadow文件中,而登陆时候输入的密码会被hash加密以后再去与/etc/shadow中存放的密码做对比,会不一致。需要先将密码字符串进行加密处理:openssl passwd -salt -1 “111111”,得到的字符串放到password中即可。
-
'111111'代表密码的长度
-
# openssl passwd -1 -salt '111111'
-
Password: #输入密码
-
$1$5423839$FVAA9INAgPYTX3CIJquxm.
-
或
-
# grub-md5-crypt
-
Password: #输入密码
Retype password: #再输一遍密码
$1$bSySn$I.PWao16tBxyGWH8q5g0q/
-
使用root权限修改被控机test1的密码
-
# ansible test1 -m user -a "name=nagios password='$1$iE8Tn$MQ/HbvalM91FgB5Hqw0mf.'" -u root
-
SSH password:
192.168.3.248 | SUCCESS => {
"append": false,
"changed": true,
"comment": "",
"group": 501,
"home": "/home/nagios",
"move_home": false,
"name": "nagios",
"password": "NOT_LOGGING_PASSWORD",
"shell": "/sbin/nologin",
"state": "present",
"uid": 501
}
-
# ansible test -m user -a "name=mysql password='$1$iE8Tn$MQ/HbvalM91FgB5Hqw0mf.'" --sudo
-
SSH password:
192.168.3.253 | SUCCESS => {
"append": false,
"changed": false,
"comment": "",
"group": 504,
"home": "/home/mysql",
"move_home": false,
"name": "mysql",
"password": "NOT_LOGGING_PASSWORD",
"shell": "/bin/bash",
"state": "present",
"uid": 504
}
-
新增用户dba,使用bash shell,附加组为admins,dbagroup,家目录为/home/dba。
-
#ansible db -m user -a "name=dba shell=/bin/bash groups=admins,dbagroup append=yes home=/home/dba/ state=present"
-
修改用户属组
-
#ansible db -m user -a "name=dba groups=dbagroup append=no"
-
删除用户test
-
#ansible web2 -m user -a "name=test state=absent remove=yes"
-
12、group(组管理)
-
远程添加组mysql
-
# ansible test1 -m group -a "gid=306 system=yes name=mysql" -u root
-
SSH password:
192.168.3.248 | SUCCESS => {
"changed": true,
"gid": 306,
"name": "mysql",
"state": "present",
"system": true
}
远程机上查看新添加的组mysql
-
# cat /etc/group |grep mysql
-
mysql:x:306:
13、synchronize(rsync同步文件)
参数
archive 参数默认启用,该参数默认开启了recursive、links、perms、times、owner、group、-D参数;
checksum 校验;
cpmpress 是否开启压缩;
copy_links:复制链接文件,默认为no,
delete=yes 使两边的内容一样;
dest 目的地址;
src 源地址;
dest_port 目的端口;
dirs 传输目录不进行递归,默认为no,即进行目录递归;
existing_only 不接收创建新文件;
mode(push推送,pull拉取) 更改推送模式、rsync_path、;
-
将主控机/root/sysinit文件同步到到被控机/tmp下
-
# ansible test1 -m synchronize -a 'src=/root/sysinit dest=/tmp/ compress=yes' -u root
-
SSH password:
Enter passphrase for key '/root/.ssh/authorized_keys':
Enter passphrase for key '/root/.ssh/authorized_keys':
Enter passphrase for key '/root/.ssh/authorized_keys':
root@192.168.3.248's password:
root@192.168.3.248's password:
192.168.3.248 | SUCCESS => {
"changed": true,
"cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh '/usr/bin/ssh -i /root/.ssh/authorized_keys -S none -o StrictHostKeyChecking=no -o Port=8020' --out-format='<>%i %n%L' \"/root/sysinit\" \"root@192.168.3.248:/tmp/\"",
"msg": "
-
# ansible test1 -m synchronize -a 'mode=pull src=/tmp/192.168.3.248 dest=/opt/' -u root
-
SSH password:
Enter passphrase for key '/root/.ssh/authorized_keys':
Enter passphrase for key '/root/.ssh/authorized_keys':
Enter passphrase for key '/root/.ssh/authorized_keys':
root@192.168.3.248's password:
192.168.3.248 | SUCCESS => {
"changed": true,
"cmd": "/usr/bin/rsync --delay-updates -F --compress --archive --rsh '/usr/bin/ssh -i /root/.ssh/authorized_keys -S none -o StrictHostKeyChecking=no -o Port=8020' --out-format='<>%i %n%L' \"root@192.168.3.248:/tmp/192.168.3.248\" \"/opt/\"",
"msg": ">f+++++++++ 192.168.3.248\n",
"rc": 0,
"stdout_lines": [
">f+++++++++ 192.168.3.248"
]
}
14、mount(配置挂载点)
选项:
dump
fstype:必选项,挂载文件的类型;
name:必选项,挂载点;
opts:传递给mount命令的参数;
passno
src:必选项,要挂载的文件;
state:必选项;
present:只处理fstab中的配置;
absent:删除挂载点;
mounted:自动创建挂载点并挂载;
umounted:卸载;
-
#ansible web1 -m mount 'name=/mnt/dvd src=/dev/sr0 fstype=iso9660 opts=ro state=present'
-
#ansible test -a 'dd if=/dev/zero of=/disk.img bs=4k count=1024'
-
#ansible test -m mount 'name=/mnt src=/dev/loop0 fstype=ext4 state=mounted opts=rw'
15、raw(类似command,但可以传递管道)
-
给被控机test目录tmp下的test文件执行权限
-
# ansible test -m raw -a 'chmod +x /tmp/test'
-
SSH password:
192.168.3.253 | SUCCESS | rc=0 >>
-
16、pip安装
-
安装Django
-
#ansible test -m pip -a "name=django state=present"
-
或
-
#ansible test -m easy_install -a "name=django"
-
-
检查Django安装是否正常,django依赖python2.7+版本。
-
#ansible app -m command -a "python -c 'import django; print django.get_version()'"
-
17、win_user(windows用户管理模块)
-
新增用户test,密码为123456,属组为Administrators
-
#ansible windows -m win_user -a "name=test passwd=123456 group=Administrators"
-
18、mysql_user(数据库用户管理)
-
新增mysql用户db1,设置登录密码为123456,对zabbix.*表有ALL权限。
-
#ansible db -m mysql_user -a 'login_host=localhost login_password=123456 login_user=root name=db1 password=123456 priv=zabbix.*:ALL state=present'
19、script(ansible控制端脚本执行到被控端。)
-
# cat script.sh
-
#!/bin/bash
-
uptime
-
# ansible web1 -m script -a 'script.sh'
-
# ansible web1 -m script -a 'script.sh'|egrep '>>|stdout' #输出结果仅过滤stdout部分。
20、lineinfile(针对文件特殊行,使用后端引用的正则表达式替换)
替换,移除文件的单行。
hosts内容:
-
[web2]
-
192.168.3.61 ansible_ssh_port=8020 ansible_ssh_user=root ansible_ssh_pass=123456
-
[web2:vars]
-
web2_hostname=song
playbook内容如下:
-
#修改主机名。
-
lineinfile:
-
dest: /etc/sysconfig/network
-
regexp: '^HOSTNAME='
-
line: 'HOSTNAME={{ web2_hostname }}'
-
tags: hostname
21、replace(批量替换文件行,使用正则匹配相应字符串)
-
#远程服务器web2配置/tmp/test
-
#cat /tmp/test
-
1be4d39eecf48ced89e1e95452e75092 test
-
#将远程服务器web2配置文件/tmp/test中所有e替换成E
-
#ansible web2 -m replace -a "dest=/tmp/test regexp='e' replace='E'"
-
22、unarchive(解压模块)
用于解压文件。
copy:在解压文件之前,是否先将文件复制到远程主机,默认为yes。若为no,目标主机上压缩包必须存在。
creates:指定一个文件名,当该文件存在时,则解压指令不执行。
src:如果copy为yes,需要指定文件的源路径。
dest:远程主机上的一个路径,即文件解压路径。
group:解压后的目录或文件的属组。
list_files:如果为yes,则会列出压缩包里的文件,默认为no。
mode:解压后的权限。
owener:解压后文件或目录属主。
-
ansible web2 -m unarchive -a "src=test.zip dest=/tmp copy=yes"
-
23、get_url(类似于wget)
主要用于从http、ftp、https服务器上下载文件。
sha256sum:下载完成后进行sha256 check;
timeout:下载超时时间,默认10s;
url:下载的url;
url_password、url_username:主要用于需要用户密码进行验证的情况;
use_proxy:使用代理,代理需要事先在环境变更中定义。
-
#ansible web2 -m get_url -a 'url=http://192.168.3.59/test/test.txt dest=/tmp/ mode=0440'
-
192.168.3.61 | SUCCESS => {
"changed": true,
"checksum_dest": null,
"checksum_src": "51ed4c692bd91b2f1bac9313cbf50e284527fc8b",
"dest": "/tmp/test.txt",
"gid": 0,
"group": "root",
"md5sum": "60cbd18458b8fb96e5af3f3811bb9238",
"mode": "0440",
"msg": "OK (51 bytes)",
"owner": "root",
"size": 51,
"src": "/tmp/tmp12DYAo",
"state": "file",
"status_code": 200,
"uid": 0,
"url": ""
}
阅读(2692) | 评论(0) | 转发(0) |