zoukankan      html  css  js  c++  java
  • ansible基本使用

    ansible介绍

    基础概念

    ansible是个配置管理工具,可以批量处理一些任务。ansible只需要依赖ssh即可使用,而不需要在受管主机上安装客户端工具。
    ansible具有幂等性,即以结果为导向。比如,当我们拉取文件到本地时,如果本地有该文件则不再拉取,如果本地没有该文件则拉取。
    使用ansible需要满足两个基本条件:

    • ansible所在的主机可以通过ssh连接到受管主机;
    • 受管主机的信息已经添加到ansible的管理清单中。

    安装配置

    安装

    首先使用pip可以安装ansible

    sudo pip install ansible
    

    安装方法有多种,可参考: https://ansible-tran.readthedocs.io/en/latest/docs/intro_installation.html

    基于密码连接配置

    ansible的管理清单文件是/etc/ansible/hosts
    在该文件底部加上:

    192.168.0.45 ansible_port=22 ansible_user=root ansible_ssh_pass=123456
    

    ansible_port:端口号
    ansible_user:用户名
    ansible_ssh_pass:密码

    然后就可以使用命令了,如ansible 192.168.0.45 -m ping

    使用ip地址比较麻烦,我们可以为主机指定别名

    test ansible_host=192.168.0.45 ansible_port=22 ansible_user=root ansible_ssh_pass=123456
    

    然后就可以使用别名进行连接,ansible test -m ping

    基于密钥连接配置

    修改配置文件为

    192.168.0.45 ansible_port=22
    

    使用别名时改为

    test ansible_host=192.168.0.45 ansible_port=22
    

    当有多个密钥时可以使用ssh-agent进行管理,也可以在配置中通过ansible_ssh_private_key_file指定连接主机使用的密钥。

    清单配置详解

    INI格式

    以上介绍的都是对一个主机执行命令,实际上可以对多台机器同时进行

    ansible all -m ping
    

    上面的命令是对配置文件中所有的机器执行ping命令,由此得到启发,对某一部分机器执行相同的命令,所以就需要对机器进行分组。

    [A]
    192.168.0.45
    192.168.0.46
    
    [B]
    192.168.0.47
    

    所以可以对某一个组内的机器执行同一个命令

    ansible A -m ping
    

    当ip地址连续时也可以采用如下方式

    [A]
    192.168.0.[45:46]
    

    同样的,如果是域名中某个字母是连续的也可以采用类似的方式

    [A]
    suraer-a.book.net
    suraer-b.book.net
    
    [A]
    suraer-[a:b].book.com
    

    当组之间有包含关系时,还可以使用子组的方式,如下

    [A]
    192.168.0.45
    
    [B]
    192.168.0.46
    
    [C:children]
    [A]
    [B]
    

    等价于

    [A]
    192.168.0.45
    
    [B]
    192.168.0.46
    
    [C]
    192.168.0.45
    192.168.0.46
    

    YAML格式

    # YAML格式
    all:
     hosts:
      192.168.0.45
      192.168.0.46
      
    # 对应的INI配置
    192.168.0.45
    192.168.0.46
    

    采用YAML格式有两个要注意的地方:

    • 各级之间采用一个空格递进,不能使用tab键
    • 分组需要用hosts关键字

    下面举两个栗子说明YAML格式与INI格式之间的转换关系:

    # INI格式
    192.168.0.47
    
    [A]
    192.168.0.45
    
    [B]
    192.168.0.46
    
    # YAML格式
    all:
     hosts:
      192.168.0.47
     children:
      A:
       hosts:
        192.168.0.45
      B:
       hosts:
        192.168.0.46
    
    # INI格式
    [A]
    192.168.0.45
    
    [B]
    192.168.0.46
    
    [C:children]
    [A]
    [B]
    
    # YAML格式
    all:
     children:
      C:
       children:
        A:
         hosts:
          192.168.0.45
        B:
         hosts:
          192.168.0.46
    

    YAML格式同样可以使用别名,如下:

    # INI格式
    192.168.0.45
    test ansible_host=192.168.0.46 ansible_port=22
    192.168.0.47
    
    # YAML格式
    all:
     hosts:
      192.168.0.45
      test:
       ansible_host: 192.168.0.46
       ansible_port: 22
      192.168.0.47
    

    注意,上面的冒号后面一定要有空格。

    ansible模块

    在前面的例子中,我们都是使用ping模块,实际上ansible有许多模块,可以使用如下命令查看那ansible有哪些模块:

    ansible-doc -l
    

    查看具体模块的详细使用方法,使用如下命令:

    ansible-doc -s fetch
    

    查看了命令就可以对照参数进行使用了,比如将A组中的所有主机的/etc/fstab文件拉取到本地:

    ansible A -m fetch -a "src=/etc/fstab dest=/test/ansible"
    

    上面命令-m表示使用那个模块,-a表示使用的参数,上面例子中使用了两个参数src和dest。
    查看更多模块参考: http://docs.ansible.com/ansible/latest/modules_by_category.html

  • 相关阅读:
    Office Web Apps安装部署(一)
    TFS 2012使用简介
    SharePoint 2013 内容部署功能简介
    SharePoint 自定义WebPart之间的连接
    循环滚动新闻列表-懒人图库
    SharePoint 2010 文档管理之过期归档工具
    SharePoint 2010 文档管理系列之文档搜索
    SharePoint 网站登录不上,3次输入用户名/密码白页、
    SharePoint 门户添加内网域名
    JavaScript异常处理和事件处理
  • 原文地址:https://www.cnblogs.com/suraer/p/8553712.html
Copyright © 2011-2022 走看看