设为首页 收藏本站
查看: 872|回复: 0

[经验分享] Ansible常用模块

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-12-27 09:13:06 | 显示全部楼层 |阅读模式
ansible笔记

hosts:远程主机
user:执行该任务组的用户
remote_user:与user相同
sudo:如果设置为yes,执行该任务组的用户在执行任务的时候,获取root权限。
sudo_user:如果设置user为tom,sudo为yes,sudo_user为jerry,则tom获取jerry用户的权限。
connection:通过什么方式连接到远程主机。
###gather:收集  facts:事实
gather_facts:除非你明确说明不需要在远程主机上执行setup模块,否则默认会自动执行。如果你确实不需要setup模块所传过来的变量,你可以启用该选项。


file 模块

1
2
3
4
ansible test -m file -a "src=/etc/fstab dest=/tmp/fstab state=link"
ansible test -m file -a 'path=/tmp/fstab state=absent'
ansible test -m file -a 'path=/tmp/file1 state=touch'
ansible test -m file -a 'path=/tmp/dir1 state=directory mode=755 owner=root group=root'




-V 或-vvv参数
ansible执行自动化脚本获取执行过程的详细信息。

1
2
3
4
5
ansible test -m  ping -v
ansible test -m  ping -vvv
# ansible 192.168.121.128:192.168.121.129 -m  ping -o
192.168.121.129 | SUCCESS => {"changed": false, "ping": "pong"}
192.168.121.128 | SUCCESS => {"changed": false, "ping": "pong"}







copy模块:
1
ansible test -m copy -a 'src=jdk.yml dest=/tmp'






ansible批量添加用户:
echo ansible | openssl passwd -1 -stdin//ansible user的password参数需要接受加密后的值。
ansible test -m user -a 'name=meng password="$1$nZ1s3fvA$gzQzd8FZuYRIldm0HMqNm/"' -f 5 -o  
  
command:
creates:指定一个文件名,当该文件存在,下面的命令将不执行。
removes:指定一个文件名,当该文件不存在,则后续命令不执行。

1
2
3
4
5
6
7
8
9
10
11
12
[iyunv@192 ansible]# ansible test  -a 'creates=/tmp/22 ls /home'
192.168.121.129 | SUCCESS | rc=0 >>
skipped, since /tmp/22 exists
192.168.121.128 | SUCCESS | rc=0 >>
skipped, since /tmp/22 exists
[iyunv@192 ansible]# ansible test  -a 'creates=/tmp/file4 ls /home'
192.168.121.129 | SUCCESS | rc=0 >>
meng
ody
192.168.121.128 | SUCCESS | rc=0 >>
meng
ody






command模块不支持管道过滤。
ansible test -a 'netstat -tnlp|grep ssh'

shell支持管道
1
ansible test -m shell -a 'netstat -tnlp|grep ssh'





类似于shell命令的raw模块也支持管道。
1
ansible test -m raw -a 'netstat -tnlp|grep ssh'




chdir:  执行命令之前先 切换到指定目录。
1
ansible test  -a 'chdir=/tmp tar czf file.tar.gz file'







service模块
enable=yes|no 开机自启动
name:服务名称
runlevel:运行级别
state:当前服务的运行状态(started,stopped,restarted,reloaded)
sleep:对服务执行restarted操作,stop和start之间沉睡几秒钟。
pattern:定义一个匹配模式,如果status指令查看服务状态时没有响应,就会通过ps命令在进程中根据该模式查找,如果匹配到,则认为该服务依然在运行。


重启服务:
1
ansible test -m raw -a 'name=httpd state=restarted sleep=3'





停止服务:
1
ansible test -m raw -a 'name=httpd state=stopped'








cron:计划任务管理
backup:对远程主机上的原计划任务内容修改之前做备份。
cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户计划
day:日(1-31,*,*/2,)
hour:小时(0-23,*,*/2)
minute:分钟(0-59,*,*/2)
mouth:月(1-12,*,*/2)
weekday:周(0-7,*,)
job:要执行的任务,依赖于state=present
name:该任务的描述
special_time:指定什么时候执行,参数:reboot,yearly,annually,monthly,weekly,daily,hourly
state:确认该任务计划是创建还是删除。
user:以哪个用户身份执行。

实例:
创建计划任务:
1
ansible test -m cron -a 'name="reboot system" hour=2 user=root job="/sbin/reboot"'






查看计划任务:
1
ansible test -m command -a 'crontab -l'






删除计划任务:
1
ansible test -m cron -a 'name="reboot system" hour=2 user=root job="/sbin/reboot" state=absent'






filesystem:在块设备上创建文件系统
选项:
dev:目标块设备
force:在一个已有文件系统的设备上强制创建
fstype:文件系统的类型
opts:传递给mkfs命令的选项



yum软件包管理:
config_file:yum的配置文件
disable_gpg_check:关闭gpg_check
disablerepo:不启用某个源
enablerepo:启用某个源
list
name:要进行操作的软件包的名字,也可以传递一个url或者一个本地的rpm的路径。
state:状态(present,absent,latest)
实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
- name: 安装最新版本的apache
  yum: name=httpd state=latest
- name: 移除apache
  yum: name=httpd state=absent
- name: 安装一个特殊版本的apache
  yum: name=httpd-2.2.29-1.4.amzn1 state=present
- name: 升级所有的软件包
  yum: name=* state=latest
- name: 从一个远程yum仓库安装nginx
  yum: name=http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present
- name: 从本地仓库安装nginx
  yum: name=/usr/local/src/nginx-release-centos-6-0.el6.ngx.noarch.rpm state=present
- name: 安装整个Development tools相关的软件包
  yum: name="@Development tools" state=present







dd if:
1
2
ansible test -m command -a 'dd if=/dev/zero of=/disk.img bs=4k count=1024'
ansible -m commmand -a 'losetup /dev/loop0 /disk.img'




ansible-playbook的语法校验。
[iyunv@192 ansible]# ansible-playbook jdk.yml --syntax-check

playbook: jdk.yml

显示指定playbook中的task。
[iyunv@192 ansible]# ansible-playbook jdk.yml --list-task

playbook: jdk.yml

  play #1 (test): testTAGS: []
    tasks:
      jdk : jdk-8u101-linux-x64.tar.gzTAGS: []
      jdk : tar jdk-8u101-linux-x64.tar.gzTAGS: []
      jdk : java_profile_1TAGS: []
      jdk : java_profile_2TAGS: []
      jdk : java profile_3TAGS: []
      jdk : java_4TAGS: []

查看playbook针对的主机
1
2
3
4
5
6
7
[iyunv@192 ansible]# ansible-playbook jdk.yml --list-hosts
playbook: jdk.yml
  play #1 (test): testTAGS: []
    pattern: [u'test']
    hosts (2):
      192.168.121.129
      192.168.121.128



指定task从第某行开始执行。
ansible-playbook jdk.yml --start-at-task='java_profile_1'  
  
  



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-319991-1-1.html 上篇帖子: ansible.cfg文件及host文件配置 下篇帖子: ansile(1)基本说明及安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表