ansible实践2-拷贝文件或目录

 
ansible testhost -m copy -a "src=/etc/ansible  dest=/tmp/ansibletest owner=root group=root mode=0755"
 
注意:源目录会放到目标目录下面去,如果目标指定的目录不存在,它会自动创建。如果拷贝的是文件,dest指定的名字和源如果不同,并且它不是已经存在的目录,相当于拷贝过去后又重命名。但相反,如果dest是目标机器上已经存在的目录,则会直接把文件拷贝到该目录下面。
 
ansible testhost -m copy -a "src=/etc/passwd dest=/tmp/1.txt"
这里的/tmp/123和源机器上的/etc/passwd是一致的,但如果目标机器上已经有/tmp/123目录,则会再/tmp/123目录下面建立passwd文件
 
Ansible远程执行脚本
 
首先创建一个shell脚本
vim  /tmp/test.sh  //加入内容
#!/bin/bash
echo `date` > /tmp/ansible_test.txt
 
然后把该脚本分发到各个机器上
ansible testhost -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"
 
最后是批量执行该shell脚本
ansible testhost -m shell -a "/tmp/test.sh"
 
shell模块,还支持远程执行命令并且带管道
ansible testhost -m shell -a "cat /etc/passwd|wc -l "
 
Ansible实现任务计划
ansible web10.aming.com -m cron -a "name=test_cron job='/bin/touch /tmp/1212.txt' weekday=6"
 
crontab -l 客户端查看
若要删除该cron 只需要加一个字段 state=absent
 
ansible testhost -m cron -a "name=test_cron state=absent"
其他的时间表示:分钟 minute 小时 hour 日期 day 月份 month
 
Ansible安装rpm包/管理服务
ansible testhost -m yum -a "name=httpd "
在name后面还可以加上state=installed
 
ansible testhost -m service -a "name=httpd state=started enabled=yes"
这里的name是centos系统里的服务名,可以通过chkconfig --list查到。
 
Ansible文档的使用
ansible-doc -l   列出所有的模块
ansible-doc cron  查看指定模块的文档
Ansible playbook的使用
 
相当于把模块写入到配置文件里面,例:
vim  /etc/ansible/test.yml
---
- hosts: web10.aming.com
  remote_user: root
  tasks:
    - name: test_playbook
      shell: touch /tmp/lishiming.txt
 
说明: hosts参数指定了对哪些主机进行参作;
user参数指定了使用什么用户登录远程主机操作;
tasks指定了一个任务,其下面的name参数同样是对任务的描述,在执行过程中会打印出来。
执行:ansible-playbook test.yml
 
 
再来一个创建用户的例子:
vim  /etc/ansible/create_user.yml
---
- name: create_user
  hosts: web10.aming.com
  user: root
  gather_facts: false
  vars:
    - user: "test"
  tasks:
    - name: create user
      user: name="{{ user }}"
 
 
说明: name参数对该playbook实现的功能做一个概述,后面执行过程中,会打印 name变量的值 ,可以省略;gather_facts参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息,这在后面的task会使用到setup获取的信息时用到;vars参数,指定了变量,这里指字一个user变量,其值为test ,需要注意的是,变量值一定要用引号引住;user提定了调用user模块,name是user模块里的一个参数,而增加的用户名字调用了上面user变量的值。
 
客户端查看 创建的用户test   grep test /etc/passwd
 
Ansible playbook中的循环
---
- hosts: testhost
  user: root
  tasks:
    - name: change mode for files
      file: path=/tmp/{{ item }} mode=600
      with_items:
        - 1.txt
        - 2.txt
                 - 3.txt
 
需要在web9, web10 机器上先创建文件 touch /tmp/{1.txt,2.txt,3.txt} 才能执行修改权限操作。
上一篇:CSS rem长度单位


下一篇:【CF833D】Red-Black Cobweb