您好,欢迎来到站长目录(28sn.com)!


Asible安装配置;模块;

来源:本站原创 浏览:1398次 时间:2019-07-11
-bak main-content">

一、安装 Ansibleyum -y install ansible二、配置 Ansible

ls /etc/ansible # ansible.cfg 是 Ansible 工具的配置文件;hosts 用来配置被管理的机器;roles 是一个目录,playbook 将使用它

ssh-keygen -t rea #生成秘钥

ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 22 root@192.168.124.7" # 将公钥写入被管理机

vim /etc/ansible/hosts #hosts 文件添加被管理机[li]192.168.124.7192.168.124.9三、测试 Ansible

# -i          指定 hosts 文件位置# -u username 指定 SSH 连接的用户名# -k          指定远程用户密码# -f          指定并发数# -s          如需要 root 权限执行时使用 ( 连接用户不是 root 时 )# -K          -s 时,-K 输入 root 密码

ansible li -m ping # 操作 Client 组 ( all 为操作 hosts 文件中所有主机 ),-m 指定执行 ping 模块

            下面是返回结果            192.168.124.7 | SUCCESS => {            "changed": false,             "ping": "pong"             }             192.168.124.9 | SUCCESS => {            "changed": false,             "ping": "pong"             }

四、Ansible常用模块详解

ansible <host-pattern> [-m module_name] [-a args] [options] #ansible命令格式

指定主机组或ip地址 指定调用模块 传递给模块的参数

ansible-doc -l 查看所有模块

ansible-doc command 查看command模块详细信息

ansible-doc -s command 查看command模块详细用法

Command命令模块接受命令名称,后面是空格分隔的列表参数。给定的命令将在所有选定的节点上执行。它不会通过shell进行处理,比如$HOME和操作如”小于”<“,”>”, “|”, “;”,”&”‘ 工作(需要使用(shell)模块实现这些功能)。action: commandchdir # 在执行命令之前,先切换到该目录creates # 一个文件名,当这个文件存在,则该命令不执行,可以用来做判断executable # 切换shell来执行命令,需要使用命令的绝对路径free_form # 要执行的Linux指令,一般使用Ansible的-a参数代替。removes # 一个文件名,这个文件不存在,则该命令不执行,与creates相反的判断

对所有机器使用pwd命令#-m 指定使用的模块command -a 传递给模块的参数

[root@Ansible ~]#ansible web -m command -a 'pwd'172.16.250.217 | SUCCESS | rc=0 >>/root172.16.252.245 | SUCCESS | rc=0 >>/root172.16.251.163 | SUCCESS | rc=0 >>/root172.16.250.149 | SUCCESS | rc=0 >>/root

===============================================================查看磁盘使用情况并将内容传输到/tmp/df.txt中

[root@Ansible ~]#ansible web -m shell -a 'df -h > /tmp/df.txt'

对/tmp/df.txt进行查看

[root@Ansible ~]#ansible web -m command -a 'cat /tmp/df.txt'

批量添加用户

[root@Ansible ~]#ansible web -m command -a 'useradd Tom'

===============================================================shell执行的命令中有管道或者变量,就需要使用shellaction: shellchdir # 执行之前,先cd到指定目录在执行命令creates # 一个文件名,当这个文件存在,则该命令不执行executable # 切换shell来执行命令,需要使用命令的绝对路径free_form # 执行的命令removes # 一个文件名,这个文件不存在,则该命令不执行

===============================================================对/tmp/df.txt进行查看

[root@Ansible ~]#ansible web -m shell -a 'cat /tmp/df.txt'

给上步添加的用户设定密码

[root@Ansible ~]#ansible web -m shell -a 'echo rookie | passwd --stdin Tom'

===============================================================copy复制模块,将文件复制到被管理主机action: copybackup # 创建一个备份文件包括时间戳信息,如果以某种方式重创错了,还可以拿回原始文件content # 取代src=,表示直接用此处指定的信息生成为目标文件内容dest # 远程节点存放文件的路径,必须是绝对路径directory_mode # 递归复制设置目录权限,默认为系统默认权限force # 如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果设置为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yesgroup # 复制到远程主机后,指定文件或目录的属组mode # 复制到远程主机后,指定文件或目录权限,类似与chmod指明如 0644owner # 复制到远程主机后,指定文件或目录属主src # 要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用”/”来结尾,则只复制目录里的内容,如果没有使用”/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync。

===============================================================将本地的/etc/fatab文件复制到目标主机的/tmp/ansible.log,属主为roo,属组为locy,权限为640,并备份

[root@Ansible ~]#ansible web -m copy -a 'src=/etc/fstab dest=/tmp/ansible.log owner=root group=locy mode=640 backup=yes'

对上一步的操作结果进行查看

[root@Ansible ~]#ansible web -m shell -a 'ls -l /tmp/ansible.log'172.16.250.217 | SUCCESS | rc=0 >>-rw-r-----. 1 root locy 541 7月 9 20:10 /tmp/ansible.log172.16.250.149 | SUCCESS | rc=0 >>-rw-r-----. 1 root locy 541 7月 9 20:10 /tmp/ansible.log172.16.252.245 | SUCCESS | rc=0 >>-rw-r----- 1 root locy 541 7月 9 08:10 /tmp/ansible.log172.16.251.163 | SUCCESS | rc=0 >>-rw-r----- 1 root locy 541 7月 9 20:10 /tmp/ansible.log

===============================================================cron定时任务模块,设置管理节点生成定时任务action: cronbackup # 如果设置,创建一个crontab备份cron_file # 如果指定, 使用这个文件cron.d,而不是单个用户crontabday # 日应该运行的工作( 1-31, , /2, etc )hour # 小时( 0-23, , /2, etc )job # 指明运行的命令是什么minute # 分钟( 0-59, , /2, etc )month # 月( 1-12, , /2, etc )name # 定时任务描述reboot # 任务在重启时运行,不建议使用,建议使用special_timespecial_time # 特殊的时间范围,参数:reboot(重启时),annually(每年),monthly(每月),weekly(每周),daily(每天),hourly(每小时)state # 指定状态,prsent表示添加定时任务,也是默认设置,absent表示删除定时任务user # 以哪个用户的身份执行weekday # 周( 0-6 for Sunday-Saturday, *, etc )

===============================================================每天凌晨三点、四点、五点、六点将磁盘使用情况保存在/tmp/df.log

[root@Ansible ~]#ansible web -m cron -a 'name="harddrive check" minute="15" hour="3,4,5,6" job="df -lh >> /tmp/df.log"'

每十分钟将磁盘使用情况保存在/tmp/df.log

[root@Ansible ~]#ansible web -m cron -a 'name="harddrive check2" minute="/10" job="df -lh >> /tmp/df.log"'[root@Ansible ~]#crontab -l#Ansible: harddrive check15 3,4,5,6 df -lh >> /tmp/df.log#Ansible: harddrive check2/10 * df -lh >> /tmp/df.log

将harddrive check删除

[root@Ansible ~]#ansible web -m cron -a 'name="harddrive check" state=absent'

===============================================================fetch远程文件复制到本地dest #保存文件的目录fail_on_missing #当设置为yes时,如果源文件丢失,任务将会失败flat #允许覆盖将主机名/路径/文件/文件附加到目的地的默认行为src #获取远程系统上的文件。这必须是一个文件,而不是一个文件目录validate_checksum #在获取文件之后验证源和目标校验和

===============================================================将远程文件/tmp/df.txt复制到本地/root/下

[root@Ansible ~]#ansible web -m fetch -a 'src=/tmp/df.txt dest=/root/'

===============================================================file文件操作模块,设置文件属性action: fileforce # 需要在两种情况下强制创建软连接,一种是源文件不存在但之后会建立的情况下;另一种是目标连接已存在,需要先取消之前的软连接,有两个选项:yes|nogroup # 设置文件或目录的属组mode # 设置文件或目录的权限owner # 设置文件或目录的属主path # 必选项,定义文件或目录的路径recurse # 递归设置文件的属性,只对目录有效src # 要被链接到的路径,只应用与state=link的情况state # directory:如果目录不存在,创建目录

===============================================================查看web组下的所有主机的/tmp/df.txt

[root@Ansible ~]#ansible web -m shell -a 'ls -l /tmp/df.txt'172.16.250.217 | SUCCESS | rc=0 >>-rw-r--r--. 1 root root 562 7月 9 19:18 /tmp/df.txt172.16.250.149 | SUCCESS | rc=0 >>-rw-r--r--. 1 root root 535 7月 9 19:18 /tmp/df.txt172.16.251.163 | SUCCESS | rc=0 >>-rw-r--r-- 1 root root 615 7月 9 19:18 /tmp/df.txt172.16.252.245 | SUCCESS | rc=0 >>-rw-r--r-- 1 root root 535 7月 9 07:18 /tmp/df.txt

将web组下的所有主机的/tmp/df.txt权限改为600属主属组为locy

[root@Ansible ~]#ansible web -m file -a 'path=/tmp/df.txt state=touch mode="600" owner=locy group=locy'172.16.250.217 | SUCCESS | rc=0 >>-rw-------. 1 locy locy 562 7月 9 21:41 /tmp/df.txt172.16.250.149 | SUCCESS | rc=0 >>-rw-------. 1 locy locy 535 7月 9 21:41 /tmp/df.txt172.16.252.245 | SUCCESS | rc=0 >>-rw------- 1 locy locy 535 7月 9 09:41 /tmp/df.txt172.16.251.163 | SUCCESS | rc=0 >>-rw------- 1 locy locy 615 7月 9 21:41 /tmp/df.txt

===============================================================在root下创建file目录

[root@Ansible ~]#ansible web -m file -a 'path=/root/file state=directory'[root@Ansible ~]#lsfile

===============================================================hostname设置系统的主机名将172.16.250.149主机名改为master

[root@Ansible ~]#ansible 172.16.250.149 -m hostname -a 'name=master'[root@Ansible ~]#hostnamemaster

===============================================================yum基于yum源安装程序action: yumconf_file # yum的配置文件disable_gpg_check # 关闭gpg_checkdisablerepo # 不启用某个源enablerepo # 启用某个源name= # 指定要安装的包,如果有多个版本需要指定版本,否则安装最新的包state # 安装(present),安装最新版(latest),卸载程序包(absent)

===============================================================为web组所有主机安装nginx 且为最新版本

[root@Ansible ~]#ansible web -m yum -a 'name=nginx state=latest'

===============================================================service服务管理模块action: servicearguments # 向服务传递的命令行参数enabled # 设置服务开机自动启动,参数为yes|noname # 控制服务的名称pattern # 定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行runlevel # 设置服务自启动级别sleep # 如果执行了restarted,则在stop和start之间沉睡几秒钟state # 启动started 关闭stopped 重新启动restarted 重载reloaded

===============================================================web组所有主机启动nginx

[root@Ansible ~]#ansible web -m service -a 'name=nginx state=started'

web组所有主机关闭nginx

[root@Ansible ~]#ansible web -m service -a 'name=nginx state=stopped'

web组所有主机重启nginx

[root@Ansible ~]#ansible web -m service -a 'name=nginx state=restarted'

web组所有主机重载nginx配置文件

[root@Ansible ~]#ansible web -m service -a 'name=nginx state=reloaded'

web组所有主机启动nginx,并开机启动/不启动

[root@Ansible ~]#ansible web -m service -a 'name=nginx state=started enabled=yes/no'

===============================================================group用户组模块,添加或删除组action: groupgid # 设置组的GID号name= # 管理组的名称state # 指定组状态,默认为创建,设置值为absent为删除system # 设置值为yes,表示为创建系统组

===============================================================创建名为tom的组

[root@Ansible ~]#ansible web -m group -a 'name=tom state=present'

==========================================================================================user用户模块,管理用户帐号action: usercomment # 用户的描述信息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 # 指定默认shellstate # 设置帐号状态,不指定为创建,指定值为absent表示删除system # 当创建一个用户,设置这个用户是系统用户。这个设置不能更改现有用户uid # 指定用户的uidupdate_password # 更新用户密码

===============================================================创建用户tom,用户信息为tom is tom,uid为1066,基本组为tom,附加组为wheel,shell类型为zshell,用户家目录为/home/tomhome

[root@Ansible ~]#ansible web -m user -a 'name=tom comment="tom is tom" uid=1066 group=tom groups=wheel shell=/bin/zshell home=/home/tomhome'[root@Ansible ~]#getent passwd tomtom:x:1066:1002:tom is tom:/home/tomhome:/bin/zshell

===============================================================script在指定节点运行服务端的脚本

[root@Ansible ~]#vim test.sh#/bin/bashtouch /tmp/test.sh.log #创建/tmp/test.sh.logecho "hello" >> /tmp/test.sh.log #将date命令结果输出到/tmp/test.sh.log在web组中所有主机执行/root/test.sh脚本[root@Ansible ~]#ansible web -m script -a '/root/test.sh'[root@Ansible ~]#cat /tmp/test.sh.loghello[root@node1 ~]#cat /tmp/test.sh.loghello查看172.16.251.163主机下的/tmp/test.sh.log[root@Ansible ~]#ansible 172.16.251.163 -m shell -a ‘cat /tmp/test.sh.log’172.16.251.163 | SUCCESS | rc=0 >>hello

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 怒江大峡谷网怒江大峡谷网

    怒江大峡谷网内容包括:新闻、要闻、怒江报、视频、文化、民俗、人文、音乐、政务、公告、政策等地方信息。

    www.nujiang.cn
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net

鄂公网安备 42062502000001号