学习linux的第七十三天

ansible管理任务计划

在这里插入图片描述
使用cron模块来管理任务计划:
[root@KXLZQ ~]# ansible testhost -m cron -a “name=‘test cron’ job=’/bin/touch /tmp/ansible_cron.txt’
weekday=1”
192.168.70.129 | SUCCESS => {
“changed”: true,
“envs”: [],
“jobs”: [
“test cron”
]
}
[root@KXLZQ ~]#
注:
name指定一个名称,用于作为标识符,会出现在crontab的注释里
job指定需要执行的命令
weekday表示星期;其他没有设置的时间位默认为 *
客户端查看执行命令:
[root@XXQ ~]# crontab -l
Lines below here are managed by Salt, do not edit
#Ansible: test cron

        • 1 /bin/touch /tmp/ansible_cron.txt
          删除该cron ,只需要加一个字段 state=absent:
          [root@KXLZQ ~]# ansible testhost -m cron -a “name=‘test cron’ state=absent”
          192.168.70.129 | SUCCESS => {
          “changed”: true,
          “envs”: [],
          “jobs”: []
          }
          客户端查看执行命令:
          [root@XXQ ~]# crontab -l
          Lines below here are managed by Salt, do not edit
          [root@XXQ ~]#
          表示时间位的字段:
          minute 分钟
          hour 小时
          day 日期
          month 月份
          weekday 周

ansible安装包和管理服务

在这里插入图片描述
给客户端安装httpd服务
[root@KXLZQ ~]# ansible testhost -m yum -a “name=httpd”
192.168.70.129 | SUCCESS => {
“changed”: false,
“msg”: “”,
“rc”: 0,
“results”: [
“httpd-2.4.6-80.el7.centos.1.x86_64 providing httpd is already installed”
]
}
启动httpd服务:(第一句为SUCCESS则代表启动成功)
[root@KXLZQ ~]# ansible testhost -m service -a “name=httpd state=started enabled=yes”
192.168.70.129 | SUCCESS => {
注:
这里的name是centos系统里的服务名,可以通过chkconfig --list查看到。
其它控制服务的命令:
停止服务
[root@KXLZQ ~]# ansible testhost -m service -a “name=httpd state=stopped”
1
重新启动服务
[root@KXLZQ ~]# ansible testhost -m service -a “name=httpd state=restarted”
1
重载服务
[root@KXLZQ ~]# ansible testhost -m service -a “name=httpd state=reloaded”
1
卸载服务
[root@KXLZQ ~]# ansible testhost -m yum -a “name=httpd state=removed”
1
注:在name后面还可以加上state=installed或removed,加上removed的话,表示卸载这个服务,如果不指定state的值默认是installed;
查看卸载状态:
[root@XXQ ~]# rpm -qa httpd
[root@XXQ ~]#
ansible-doc -l : 列出所有的模块
ansible-doc cron :查看指定模块的文档

ansible-playbook

在这里插入图片描述
在这里插入图片描述
Playbooks 是 Ansible的配置,部署,编排语言.他们可以被描述为一个需要希望远程主机执行命令的方案,或者一组IT程序运行的命令集合.
如果 Ansible 模块你是工作室中的工具,那么 playbooks 就是你设置的方案计划.
Playbooks 的格式是YAML。
playbook相当于可以把模块命令都写入到配置文件,就可以直接执行,类似于脚本;
[root@KXLZQ ~]# vim /etc/ansible/test.yml
hosts: testhost //针对testhost主机,若果多个主机,可以用逗号隔开
remote_user: root //远程用户为root
tasks: //任务
- name: test_playbook //任务名 test_playbook
shell: touch /tmp/test.txt //用到shell模块
playbook格式:
第一行需要有三个杠,hosts参数指定了对哪些主机进行参作,如果是多台机器可以用逗号作为分隔,也可以使用主机组,在/etc/ansible/hosts里定义;
user参数指定了使用什么用户登录远程主机操作;
tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来,shell是ansible模块名字
执行文件:ansible-playbook
[root@KXLZQ ~]# ansible-playbook /etc/ansible/test.yml
PLAY [testhost]


TASK [Gathering Facts]


ok: [192.168.70.129]
TASK [test_playbook]


[WARNING]: Consider using file module with state=touch rather than running touch
changed: [192.168.70.129]
PLAY RECAP



192.168.70.129 : ok=2 changed=1 unreachable=0 failed=0
客户端验证:
[root@XXQ ~]# ls -l /tmp/test.txt
-rw-r–r--. 1 root root 0 12月 30 16:05 /tmp/test.txt
[root@XXQ ~]#

playbook的变量

例:创建用户
[root@KXLZQ ~]# vim /etc/ansible/create_user.yml # 编辑内容如下
name: create_user
hosts: testhost
user: root
gather_facts: false
vars:
- user: “test”
tasks:
- name: create user
user: name="{{ user }}"
注:
name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略;
gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,如果需要在后面的tasks里获取setup收集到的信息,就需要把这个参数设置为True;
vars参数,指定了变量,这里声明了一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住;
user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值
执行:
[root@KXLZQ ~]# ansible-playbook /etc/ansible/create_user.yml
PLAY [create_user]


TASK [create user]


changed: [192.168.70.129]
PLAY RECAP



192.168.70.129 : ok=1 changed=1 unreachable=0 failed=0
注:如果test用户已经存在,输出显示绿色,changed=0;
客户端查看:
[root@XXQ ~]# id test
uid=1000(test) gid=1000(test) 组=1000(test)

playbook的循环

在这里插入图片描述
创建:
[root@KXLZQ ~]# vim /etc/ansible/while.yml

  • hosts: testhost
    user: root
    tasks:
    • name: change mode for files
      file: path=/tmp/{{ item }} state=touch mode=600
      with_items:
      • 1.txt
      • 2.txt
      • 3.txt
        注:
        file模块可以对文件进行相关的操作,例如创建文件或者更改文件权限等,具体可以查看该模块的文档
        with_items为循环的对象,相当于是一个数组或集合,写在下面的1.txt、2.txt以及3.txt是该集合的元素。而item则表示的是遍历出来的元素,也就是说item指代的是1.txt、2.txt以及3.txt。
        state的值设置为touch表示如果该文件不存在就进行创建
        path表示文件的路径
        mode设置权限
        执行:
        [root@KXLZQ ~]# ansible-playbook /etc/ansible/while.yml
        PLAY [testhost]

TASK [Gathering Facts]


ok: [192.168.70.129]
TASK [change mode for files]


changed: [192.168.70.129] => (item=1.txt)
changed: [192.168.70.129] => (item=2.txt)
changed: [192.168.70.129] => (item=3.txt)
PLAY RECAP



192.168.70.129 : ok=2 changed=1 unreachable=0 failed=0
查看:
[root@XXQ ~]# ll /tmp/*.txt
-rw-------. 1 root root 0 12月 30 10:28 /tmp/1.txt
-rw-------. 1 root root 0 12月 30 10:28 /tmp/2.txt
-rw-------. 1 root root 0 12月 30 10:28 /tmp/3.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值