宝马4系,Ansible运维自动化东西19个常用模块运用实例(root用户视点),国海证券

本文章是站在root用户角度对Ansible的19个常用模块进行测验运用。为什么杰出是站在root用户角度,因为许多时分,处于效劳器安全考虑,咱们是制止root用户直接登录体系,假如要长途登录或许长途操控效劳器,有必要先登录普通用户,再登录root用户,因而在这个过程中,Ansible中root用户想运用相应的模块则没有像普通用户那么简略。

一、模块列表

1、setup

2、ping

3、file

4、copy

5、command

6、shell

7、script

8、cron

9、yum

10、service

11、group

12、user

13、stat

14、mount

15、fetch

16、synchronize

17、get_url

18、hostname

19、wait_for

二、模块示例

1、setup 功用:收集体系信息

#经过指令获取一切的体系信息,收集主机的一切体系信息

# ansible -i /etc/ansible/.hosts-root j叶飞张雨彤r-root -c paramiko -m setup



留意:/etc/ansible/.hosts 文件的写法很要害,官网也出了相关的阐明,只不过官方的文档分版别描绘的,稍不留意就掉坑了,详细格局如下:

[xxxx-root]

192.168.1.51 ansible_become=True ansible_become_method=su ansible_become_user=root ansible_become_pass=1111111111

192.168.1.52 ansible_become=True ansible_become_method=su ansible_become_user=root ansible_become_pass=1111111111

#收集体系信息并以主机名为文件名别离保存在/tmp/facts 目录

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m setup --tree /tmp/facts

#收集和内存相关的信息

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m setup -a 'filter=ansible_*_mb'

#收集网卡信息

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m setup -a 'filter=ansible_eth[0-2]'


2、ping功用:测验网络连通性, ping模块没有参数

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m ping


3、file功用:文件特点设置

force:需求在两种状况下强制创立软链接,一种是源文件不存在,但之后会树立的状况下;另一种是方针软链接已存在,需求先撤销之前的软链,然后创立新的软链,有两个选项:yes|no

group:界说文件/目录的属组pornos

mode:界说文件/目录的权限

owner:界说文件/目录的属主

path:必选项,界说文件/目录的途径

recurse:递归设置文件的特点,只对目录有用

src:被链接的源文件途径,只应用于state=link的状况

dest:被链接到的途径,只应用于state=link的状况

state包含以下:

directory:假如目录不存在,就创立目录

file:即便文件不存在,也不会被创立

link:创立软链接

hard:创立硬链接

touch:假如文件不存在,则会创立一个新的文件,假如文件或目录已存在,则更新其终究修正时刻

absent:删去目录、文件或许撤销链接文件

创立软链接:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"

删去软衔接:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m file -a耶律原 "path=/tmp/resolv.conf state=absent"

创立目录(文件):

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m file -a "path=/root/testfile group=ihavecar owner=ihavecar mode=700 state=directory"


4、copy功用:仿制文件到长途主机

backup: #在掩盖之前,将源文件备份,备份文件包含时刻信息。有两个选项:yes|no

content: #用于代替“sr统组词c”,能够直接设定指定文件的值

dest: #必选项。要将源文件仿制到的长途主机的绝对途径,假如源文件是一个目录,那么该途径也有必要是个目录

directory_mode: #递归设定目录的权限,默以为体系默许权限

force: #假如方针主机包含该文件,但内容不同,假如设置为yes,则强制掩盖,假如为no,则只要当方针主机的方针方位不存在该文件时,才仿制。默以为yes

others:#一切的file模块里的选项都能够在这里运用

group # 仿制到长途主机后,指定文件或目录的属

mode # 仿制到长途主机后,指定文件或目录权限,相似与 `chmod’指明如 0644

owner # 仿制到长途主机后,指定文件或目录属主

src:被仿制到长途主机的本地文件,能够是绝对途径,也能够是相对途径。假如途径是一个目录,它将递归仿制。在这种状况下,假如途径运用“/”来结束,则只仿制目录里的内容,假如没有用“/”来结束,则包含目录在内的整个内容悉数仿制,类宝马4系,Ansible运维主动化东西19个常用模块运用实例(root用户角度),国海证券似于rsync。

将本地文件“/etc/ansible/ansible.cfg”仿制到长途效劳器,设置属主和属组及文件权限

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ansible.cfg owner=ihavecar group=root mode=400"


5、command功用:在长途主机上履行指令

Command不适用于有shell变量的状况,也不适用于有管道符或许&&的状况,假如要运用此种状况,那么能够运用shell模块

相关选项如下:

creates:一个文件名,当该文件存在,则该指令不履行

free_form:要履行的linux指令

chdir:在履行指令之前,先切换到该目录

removes:一个文件名,当该文件不存在,则该选项不履行

executable:切换shell来履行指令,该履行途径有必要是一个绝对途径

长途履行查询体系负载:

# ansible -i /e丽柜tc/ansible/.hosts-root jr-root -c paramiko -m command -a "uptime"

如带有管道的,则会如下报错,command是不答应有管道的:

#宝马4系,Ansible运维主动化东西19个常用模块运用实例(root用户角度),国海证券 ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m command -a "uptime | grep 192.168.1.50"


6、shel同仁圣方l功用:切换到某个shell履行指定的指令

切换到某个shell履行指定的指令,与command不同的是,此模块能够支撑指令管道,一起还有另一个模块也具有此功用:raw

chdir # 履行之前,先cd到指定目录在履行指令

creates # 一个文件名,当这个文件存在,则该指令不履行

executable # 切换she十头金毛吼ll来履行指令,需求运用指令的绝对途径

free_form= # 履行的指令

removes # 一个文件名,这个文件不存在,则该指令不履行

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m shell -a "cat /etc/passwd | grep root"

可长途履行脚本:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m shell -a "sh /tmp/ec丑女丽媞ho.sh"


7、script功用:指定本地的脚本文件,到长途主机运转一次

留意这个模块和shell模块的不同,shell模块是要求客户端上有这个脚本才干履行;script是要求ansible效劳端有这个脚本就能够了,履行的时分是不会仿制这个脚本到客户端的。

creates # 一个文件名,当这个文件存在,则该指令不履行

free_form= # 本地脚本途径

removes # 一个文件名,这个文件不存在,则该指令不履行

ansible端的已有脚本,就只要一条/sbin/ifconfig 指令,该脚本被拿到客户端上履行,并回来成果:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m script -a "/etc/ansible/masterecho.sh"


8、cron功用:计划使命办理

backup # 假如设置,创立一个crontab备份

cron_file # 假如指定, 运用这个文件cron.d,而不是单个用户crontab

day # 日应该运转的作业( 1-31, *, */2, etc )

hour # 小时 ( 0-23, *, */2, etc )

job # 指明运转的指令是什么

minute # 分钟( 0-59, *, */2, etc )

month # 月( 1-12, *, */2, etc )

name # 守时使命描绘

reboot # 使命在重启时运转,不主张运用,主张运用special_time

special_time # 特别的时刻规模,参数:reboot(重启时),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小时)

state # 指定状况,prsent表明增加守时使命,也是默许设置,absent表明删去守时使命

user # 以哪个用户的身份履行

weekday # 周 ( 0-6 for Sunday-Saturday, *, etc )

界说一个时刻使命,每隔3分钟履行一次时刻记载使命:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m cron -a 'name="ntp datatime job" minute=宝马4系,Ansible运维主动化东西19个常用模块运用实例(root用户角度),国海证券*/3 hour=* day=* month=* weekday=* job="echo `date` >> /tmp/linshidata.txt"'

作用如下:

删去一个时刻使命:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m cron -a 'name="ntp datatime job" minute=*/3 hour=* day=* month=* weekday=* job="echo `date` >> /tmp/linshidata.txt" state=absent'


9、yum功用:软件包装置办理

conf_file # yum的装备文件

disable_gpg_check # 封闭gpg_check

disablerepo # 不启用某个源

enablerepo # 启用宝马4系,Ansible运维主动化东西19个常用模块运用实例(root用户角度),国海证券某个源

List # 非幂等性指令

name= # 指定要装置的包,假如有多个版别需求指定版别,否则装置最新的包

state # 装置(`present’),装置最新版(`latest’),卸载程序包(`absent’)

指定版别装置包:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m yum -a "name=httpd-devel-2.2.15 state=present"

指定装置最新版别的包:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m yum -a "name=httpd-devel-2.2.15 state=latest"

指定rpm包来装置:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m yum -a "name=/usr/local/src/kel.noarch.rpm state=present"

指定长途网址rpm包来进行装置:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m yum -a "name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6.0.el6.ngx.noarch.rpm state=present"

删去包:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m yum -a "name=httpd-devel-2.2.15 state=absent"


10、service功用:体系效劳办理

arguments # 向效劳传递的指令行参数

enabled # 设置效劳开机主动发动,参数为yes|no

n谢咏殊ame= # 操控效劳的称号

pattern # 假如经过status指令来查看效劳的状况时,没有响应,就会经过ps指令在进程中依据该形式进行查找,假如匹配到,则以为该效劳仍然在运转

runlevel # 设置效劳自发动等级

sleep # 假如履行了restarted,则在stop和start之间熟睡几秒钟

state # 发动`started’ 封闭`stopped’ 重新发动 `restarted’ 重载 `reloaded’

设置httpd效劳为开机自发动形式,并约束敞开httpd效劳

# ansible -i /etc/ansible/.hosts-root jr-r格莱美游览oot -c paramiko -m service -a "name=httpd state=started enabled=yes"

重启httpd效劳,中心sleep 10秒钟

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m service -a "name=httpd state=restarted sleep=10"


11、group功用:体系用户组办理

gid # 设置组的GID号

name= # 办理组的称号

state # 指定组状况,默以为创立,设置值为absent为删去

system # 设置值为yes,表明为创立体系组

创立一个foo组,指定gid号

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m group -a "name=foo gid=360 system=no"

删去一个组:

# ansible -i /etc/ansible/.hosts-ro寻常疣图片大全ot jr-root -c paramiko -m group -a "name=foo gid=360 system=no state=absent"


12、user功用:体系用户账号办理

comment # 用户的描绘信息

createhome # 是否创立家目录

force # 在运用`state=absent’时, 行为与`userdel –force’共同.

group # 指定基本组

groups # 指定附加组,假如指定为(‘groups=’)表明删去一切组

home # 指定用户家目录

login_class # 能够设置用户的登录类 FreeBSD, OpenBSD and NetBSD体系.

move_home # 假如设置为`home=’时, 企图将用户主目录移动到指定的目录

name= # 指定用户名

non_unique # 该选项答应改动非仅有的用户ID值

password # 指定用户暗码

remove # 在运用 `state=absent’时, 行为是与 `userdel –remove’共同.

shell # 指定默许shell

state #设置帐号状况,不指定为创立,指定值为absent表明删去

system # 当创立一个用户,设置这个用户是体系用户欧美白叟。这个设置不能更改现有用户。

uid #指定用户的uid

update_password # 更新用户暗码

增加用户foo,黄可可指定暗码,设置家目录,不答应长途登录

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m user -a "name=foo password=123456 home=/home/foo shell=/sbin/nologin"

完全删去一个用户,包含家目录:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m user -a "name=foo remove=yes state=absent"


13、stat功用:获取长途文件信息

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m stat -a "path=/etc/passwd"


14、mount功用:装备挂载点

fstype:必选项,挂载文件的类型

name:必选项,挂载点

opts:传递给mount指令的参数

src:必选项,要挂载的文件

state:必选项

present:只处理fstab中的装备

absent:删去挂载点

mounted:主动创立挂载点并挂载之

umounted:卸载

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m mount -a "name=/mnt src=/dev/sda5 fstype=ext4 opts=rostate=present"


15、fetch功用:文件拉取模块,首要是将长途主机中的文件仿制到本机中

和copy模块的作用刚刚相反,而且在保存的时分运用hostname来进行保存,当文件不存在的时分,会呈现过错,除非设置了选项fail_on_missing为yes

Dest:用来寄存文件的目录,例如寄存目录为backup,源文件称号为/etc/profile在主机pythonserver中,那么保存为/backup/pythonserver/etc/profile

Fail_on_missing: Yes/no,当源文件不存在的时分,标识为失利

Flat: 答应掩盖默许行为从hostname/path到/file的,假如dest以/结束,它将运用源文件的根底称号

Src: 在长途拉取的文件,而且有必要是一个file,不能是目录

Validate_checksum Yes/no,当文件fetch之后进行md5查看

从长途机器上床送文件到ansible效劳器花仙子养成专家

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m fetch -a "src=/root/123 dest=/root"

src表明为长途主机上需求传送的文件的途径,dest表明为本机上的途径,在传送过来的文件,是依照IP地址或hostnam宝马4系,Ansible运维主动化东西19个常用模块运用实例(root用户角度),国海证券e进行分类,然后途径是源文件的途径,例如上面的终究途径为/宝马4系,Ansible运维主动化东西19个常用模块运用实例(root用户角度),国海证券root/192.168.1.50/root/123在拉取文件的时分,有必要拉取的是文件,不能拉取文件夹

指定途径目录进行保存:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m fetch -a "sr鑫林艺帆c=/root/Ssh.py dest=/root/kel/ flat=yes"

在运用参数为flat的时分,假如dest的后缀名为/,那么就会保存在目录中,然后直接保存为文件名,如上例的成果为 dest”: “/root/kel/Ssh.py;

当dest后缀不为/的时分,那么就会直接保存为kel的文件,如上例1所示。首要是在于dest是否已/结束,从而来区别这是个目录仍是途径。


16、synchronize功用:将主控方/root/a目录推送到指定节点的/tmp目录下

选项阐明

archive # 是否选用归档形式同步,即以源文件相同特点同步到方针地址

checksum # 是否效验

compress # 敞开紧缩,默以为敞开

copy_links # 同步的时分是否仿制衔接

delete # 删去源中没有而方针存在的文件(即以推送方为主)

dest= # 方针地址

dest_port # 方针承受的端口,ansible装备文件中的 ansible_ssh_port 变量优先级高于该 dest_port 变量

dirs # 以非递归的方法传输目录

existing_only # Skip creating new files on receiver.

group # Preserve group宝马4系,Ansible运维主动化东西19个常用模块运用实例(root用户角度),国海证券

links # Copy symlinks as symlinks.

mode # 形式,rsync 同步的方法 PUSH\PULL,默许都是推送push。假如你在运用拉取pull功用的时分,能够参阅如下来完成mode=pull 更改推送形式为拉取形式

recursive # 是否递归 yes/no

rsync_opts # 运用rsync 的参数

rsync_path # 效劳的途径,指定 rsync 指令来在长途效劳器上运转。这个参阅rsync指令的--rsync-path参数,--rsync-pa以此戒指th=PATH # 指定长途效劳器上的rsync指令地点途径信息

rsync_timeout # 指定 rsync 操作的 IP 超时时刻,和rsync指令的 --timeout 参数作用相同.

set_remote_user # put user@ for the remote paths. If you have a custom ssh config to李淑显 define the remote user for

src=\‘#\‘" # 源,同步的数据源

times #

--exclude=.Git 疏忽同步.git结束的文件

因为模块默许启用了archive参数,该参数默许敞开了re小寡妇上坟哭十二月苦cursive, links, perms, times, owner,group和-D参数。假如你将该参数设置为no,那么你将中止许多参数,比方会导致如下意图递归失利,导致无法拉取

紧缩传输a目录到被控节点:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m synchronize -a 'src=/root/a dest=/tmp/ compress=yes'

留意:主控端的a目录传输到被控节点,文件特点曩昔被控节点后,只能是remote user的权限,也便是ihavecar的,不能是root的,也不答应传输到ihavecar这个用户无权限的目录下去,否则会报错。

运用pull形式拉取文件到主控节点:

因为模块,默许都是推送push。因而,假如你在运用拉取pull功用的时分,能够参阅如下来完成

mode=pull 更改推送形式为拉取形式。

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m synchronize -a 'mode=pull src=/tmp/a dest=/root/ compress=yes'

留意:从被控节点传目录回到主控节点,能够遵从权限,被控节点端目录的特点是什么,传回主控节点的目录权限便是什么,并不会像push方法那样特点改动成普通用户的。还有一点需求留意的是,从被控节点传输回主控节点,只要一个节点能传输成功,其他的节点都会失利。当然,假如各个被控节点的文件假如不是相同的话,那么各个节点都会传文件回来。那样主控端就会收到驰援藏金谷各个节点的悉数文件。


17、get_url功用:将某个url的文件下载到被控节点的某个方位

将simplejson-3.8.2.tar.gz 下载到/tmp/下:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m get_url -a "url=https://pypi.python.org/packages/source/s/simplejson/simplejson-3.8.2.tar.gz dest=/tmp/"


18、hostname功用:首要用来修正主机的称号

在查看的时分,首要查看文件/etc/sysconfig/network,重启之后才干收效

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m hostname -a "name=ansible-test"


19、wait_for功用:等候一个工作发作或处理完后,再持续运转下面的工作

connect_timeout 默许5秒,鄙人一个工作发作前等候链接的时刻,单位是秒

delay 延时,我们都懂,在做下一个工作前延时多少秒

host 默许127.0.0.1,履行这个模块的host

path 当一个文件存在于文件体系中,下一步才持续。

port 端口号,如8080

state 默许started,对象是端口的时分start状况会保证端口是翻开的,stoped状况会承认端口是封闭的

present 对象是文件的时分present或许started会承认文件是存在的,而absent会承认文件是不存在的。

started

stopped

absent

10秒后在当时主机开端查看8000端口,直到端口发动后回来:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m wait_for -a "port=22612 delay=10"

查看path=/tmp/foo直到文件存在后持续:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m wait_for -a "path=/tmp/foo"

承认/var/lock/file.lock不存在持续:

# ansible -i /etc/ansible/.hosts-root jr-root -c paramiko -m wait_for -a "path=/var/look/file.lock state=absent"

本文来自 运维人生 转载请注明;

本文地址:http://www.ywadmin.com/?id=91