zoukankan      html  css  js  c++  java
  • ansible 快速入门

    安装

    $ sudo apt-get install software-properties-common
    $ sudo apt-add-repository ppa:ansible/ansible
    $ sudo apt-get update
    $ sudo apt-get install ansible
    

    配置文件

    /etc/ansible/hosts  #主机分组
    /etc/ansible/ansible.cfg  #ansible 配置文件
    

    第一个命令

    $ ansible all -m ping
    
    
    -u 参数指定用户
    $ ansible all -m ping -u bruce
    # as bruce, sudoing to root
    $ ansible all -m ping -u bruce --sudo
    # as bruce, sudoing to batman
    $ ansible all -m ping -u bruce --sudo --sudo-user batman
    

    常用命令命令模块:

    命令模块Commands:

    每次重启10个主机
    $ ansible atlanta -a "/sbin/reboot" -f 10
    

      

    shell模块:

    $ ansible raleigh -m shell -a 'echo $TERM'
    

      

    文件模块File Transfer:

    拷贝文件
    $ ansible atlanta -m copy -a "src=/etc/hosts dest=/tmp/hosts"
    更改文件属性
    $ ansible webservers -m file -a "dest=/srv/foo/a.txt mode=600"
    $ ansible webservers -m file -a "dest=/srv/foo/b.txt mode=600 owner=mdehaan group=mdehaan"
    创建文件夹
    $ ansible webservers -m file -a "dest=/path/to/c mode=755 owner=mdehaan group=mdehaan state=directory"
    递归删除
    $ ansible webservers -m file -a "dest=/path/to/c state=absent"
    

      

    包模块Managing Packages:

    支持yum和apt
    确认一个包已经安装
    $ ansible webservers -m yum -a "name=acme state=present"
    确认一个包没有安装
    $ ansible webservers -m yum -a "name=acme state=absent
    确认一个软件包的安装版本
    $ ansible webservers -m yum -a "name=acme-1.5 state=present"
    

    Users and Groups:

    $ ansible all -m user -a "name=foo password=<crypted password here>"
    
    $ ansible all -m user -a "name=foo state=absent"
    

    Deploying From Source Control:

    直接使用 git 部署 webapp:

    $ ansible webservers -m git -a "repo=git://foo.example.org/repo.git dest=/srv/myapp version=HEAD"
    

      

    Managing Services:

    确认某个服务在所有的webservers上都已经启动:
    $ ansible webservers -m service -a "name=httpd state=started"
    或是在所有的webservers上重启某个服务(译者注:可能是确认已重启的状态?):
    $ ansible webservers -m service -a "name=httpd state=restarted"
    确认某个服务已经停止:
    $ ansible webservers -m service -a "name=httpd state=stopped"
    

      

    Time Limited Background Operations:

    需要长时间运行的命令可以放到后台去,在命令开始运行后我们也可以检查运行的状态.如果运行命令后,不想获取返回的信息, 可执行如下命令:
    
    $ ansible all -B 3600 -P 0 -a "/usr/bin/long_running_operation --do-stuff"
    如果你确定要在命令运行后检查运行的状态,可以使用 async_status 模块.前面执行后台命令后会返回一个 job id, 将这个 id 传给 async_status 模块:
    
    $ ansible web1.example.com -m async_status -a "jid=488359678239.2844"
    获取状态的命令如下:
    
    $ ansible all -B 1800 -P 60 -a "/usr/bin/long_running_operation --do-stuff"
    其中 -B 1800 表示最多运行30分钟, -P 60 表示每隔60秒获取一次状态信息.
    
    Polling 获取状态信息的操作会在后台工作任务启动之后开始.若你希望所有的工作任务快速启动, --forks 这个选项的值 要设置得足够大,这是前面讲过的并发进程的个数.在运行指定的时间(由``-B``选项所指定)后,远程节点上的任务进程便会被终止.
    
    一般你只能在把需要长时间运行的命令或是软件升级这样的任务放到后台去执行.对于 copy 模块来说,即使按照前面的示例想放到 后台执行文件传输,实际上并不会如你所愿.
    

    Gathering Facts:

    在 playbooks 中有对于 Facts 做描述,它代表的是一个系统中已发现的变量.These can be used to implement conditional execution of tasks but also just to get ad-hoc information about your system. 可通过如下方式查看所有的 facts:
    
    $ ansible all -m setup
    

      

      

     

  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/37yan/p/7112536.html
Copyright © 2011-2022 走看看