相关文章推荐
博学的瀑布  ·  ProTable 快速搭建 CRUD ...·  1 年前    · 
健壮的野马  ·  C/C++ 恨透了 double free ...·  1 年前    · 
玩命的猴子  ·  Swift ...·  1 年前    · 

近期使用了ansible,在这简单记录一下ansible的使用

使用ansible-playbook的方式执行,首先编写剧本,定义好剧本中需要的变量

ansible-playbook -i vars test.yml

test.yml剧本中编写详细的操作,例如

- name:first ansible
  hosts: all
  gather_facts: no
  tasks:
  - name: mkdir
   # become: yes
   # become_user: "test"
    file:
       path: /tmp/test/
       state: directory
       mode: '755'
  - name: download package
    get_url:
       url: "{{pac_url}}"
       dest: /tmp/test/test.tar.gz
  - name: bak ozone
    command: bash -lc 'mv /tmp/test/ /tmp/test.bak.{{timestamp}}'
  - name: unarchive package
    unarchive:
       src: /tmp/test/test.tar.gz
       dest: /tmp/test/
       copy: no
       mode: 0755

vars中设置需要的变量信息如host,username,timestamp等

[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=123456
timestamp="{{lookup('pipe', 'date +%Y%m%d%H%M%SZ')}}"
[all]
11.11.11.11
22.22.22.22
33.33.33.33

对使用到的ansible的模块信息作一下总结:

ansible的file模块

file:
  path: /tmp
  group: 定义文件的组信息
  owner: 定义文件的用户信息
  recurse: 是否递归执行
  src: 被链接的原文件路径,只适用于state类型是link
  dest: 被链接的目的文件路径,只适用于state类型是link
  state: directory
  mode: 755
state的状态可以表示对该文件的操作:
   directory: 如果目录不存在,创建目录
   file: 如果文件不存在,不创建
   link: 创建软连接
   hard: 创建硬连接
   touch: 如果文件不存在则创建文件,如果文件存在则修改文件的创建时间
   absent: 删除目录、文件或者取消链接文件

ansible的unarchive和archive模块

本模块主要是用来解压和压缩相关的文件
1.本模块能将本地主机的压缩包上传到远程主机上
2.能将远程主机上某个目录的压缩包解压到指定的目录
unarchive:
      copy: no|yes  no代表从远程解压到指定的目录,yes代表从本地复制到远程主机上
      src: 源路径 一般是写到具体的压缩包名
      dest: 主机上的解压的路径名
      mode:解压后的目录权限
archive:
     path: /path/test/111. 要压缩的文件和目录
     dest: /path/test/111.tar.gz 压缩后的文件
     format: bz2, gz, tar, xz, zip 指定的打包类型

ansible的get_url模块

本模块主要是通过url下载东西,类似于wget
get_url:
   dest: 文件的下载到的目的路径
   owner: 指定文件的用户
   group: 指定文件的组
   mode: 指定文件的权限
   force: yes | no  yes表示下载文件后,如果文件改变则覆盖这个文件,no表示只要该文件存在则不下载
   url: 下载的文件的url信息
   url_password: 如果下载文件时需要密码
   url_username: 下载文件时的用户名信息
   user_proxy: no | yes 如果是no则不使用代理,yes表示使用代理
   validate_certs: no | yes , no ssl证书不会被验证

ansible的copy模块

本模块主要是将ansible的管理主机上的文件copy到远程主机上
copy:
  src: 管理主机上的文件路径
  dest: 拷贝到远程主机上的文件路径
  force: yes | no, yes表示如果目标路径存在同名文件,并且和本地主机上的内容不同则覆盖,no表示不会覆盖,远程主机的文件保持不变
  backup: yes | no ,yes表示如果远程主机上存在该文件,并且内容和要拷贝的内容不同,则将远程主机上的文件备份,no表示不备份
  owner: 指定拷贝文件后的用户信息
  group:指定拷贝文件后的组信息
  mode: 指定拷贝后的文件的权限信息

ansible获取时间戳

定义变量:
   timestamp="{{lookup('pipe', 'date +%Y%m%d%H%M%SZ')}}”
使用变量:
   "{{timestamp}}"

持续更新中。。。

近期使用了ansible,在这简单记录一下ansible的使用使用ansible-playbook的方式执行,首先编写剧本,定义好剧本中需要的变量ansible-playbook -i vars test.ymltest.yml剧本中编写详细的操作,例如- name:first ansible hosts: all gather_facts: no tasks: - name: mkdir # become: yes # become_user: "test" 安装流浪汉的说明。 我在这里 使用 流浪汉来设置三个运行centos7的测试 服务器 。 通过设置三台 服务器 开始该过程: 这将初始化由提供的Vagrantfile配置的所有虚拟机。 $ vagrant up 这三个虚拟机在具有虚拟盒的NATed网络上配置。 它们是关联的IP: 192.168.60.4 192.168.60.5 192.168.60.6 ansible config用于设置IP地址,vagrant用户和vagrant ssh密钥。 [app] 192.168.60.4 192.168.60.5 192.168.60.6 #varibles for all servers [multi:vars] ansible _ssh_user=vagrant [root@ ansible -master ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) [root@ ansible -master ~]# ansible --version ansible 2.7.10 config file = /etc/ ansible / ansible .cfg confi...
copy: ansible server -m copy -a 'src=/etc/ ansible /port/iptables dest=/etc/sysconfig/iptables owner=root group=root backup=yes mode=600' 转载于:https://www.cnblogs.com/nb-blog/p/9183283.html
http://www. ansible .com.cn/docs/intro_getting_started.html 1,看文档说按装 ansible ,只需要源码就可以直接启动,并且在被管理节点上不需要安装别的软件,依赖ssh,sftp(可以配置成scp方式) 2, Ansible 1.3及之后的版本默认会在本地的 OpenSSH可用时会尝试用其进行远程通讯.这会启用ControlPersist(一个性...
vi hosts [xxx] xx.xx.xx.xx ansible _connection=ssh ansible _ssh_user=apps ansible _ssh_pass=xxxxxxxx #创建目录,目录存在不操作 ansible all -m file -a "path=/apps/.ssh/ state=directory " #修改目录权限 ansible all -m file...
ansible 是什么 使用 Shell脚本配置机器非常麻烦 (Configuring machines with shell scripts is terribly messy) Do you want to start using Ansible ? Are you already using it, but coming up against challenges? Even if you don...
一、并发运行 ansible 默认只会创建5个进程,所以一次任务只能同时控制5台机器执行。那如果在 使用 ansible 的过程中有大量的机器需要控制,或者在 使用 中想减少进程数,以上情况下,可以采取异步执行。 ansible 的门票快可以把task放入后台,然后轮循它,这使得在一定进程数下能让大量需要的机器同时运作起来。 使用 async和poll这两个关键字便可以并行运行一个任务。async这个关键字触发 ansible 并行运作任务,而async的值是 ansible 等待运行这个任务的最大超时时间,而poll就是ans