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

    ansible 入门
    ansible是一款简单的运维自动化工具,只需ssh协议连接即可进行系统管理,自动化执行命令,部署等
    特点:
    1、不需要单独安装客户端,不需启动任何服务
    2、是python中一套完整的自动化执行任务模块
    3、playbook采用yaml配置,对于自动化任务执行一目了然
    组成结构:
    a、ansible,命令工具,核心执行工具,一次性或临时执行的操作都是通过该命令
    b、ansible playbook 任务剧本,编排定义ansible任务集的配置文件,顺序依次执行,yaml格式
    c、inventory 管理主机的清单,默认/etc/ansible/hosts
    d、modules 执行命令的功能模块
    e、plugins 插件
    f、api 提供给第三方程序调用的应用程序编程接口

    环境:
    server:192.168.10.193
    client:192.168.10.191 192.168.10.192 192.168.10.194 192.168.10.195 192.168.10.196
    centos7.6

    1、配置epol源并安装ansible
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum clean all
    yum makecache
    yum -y install ansible
    ansible --version

    2、ansible inventory文件
    #inventory通常用于定义要管理的主机的认证信息,如ssh登录用户名密码及key等相关信息.可以同时操作一个组的多台主机,组和主机组之间的关系都是通过inventory文件配置,/etc/ansible/hosts

    2.1、基于密码连接
    cat /etc/ansible/hosts
    [web1]
    192.168.10.191 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
    192.168.10.192 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
    [web2]
    192.168.10.19[4:6] ansible_ssh_user=root ansible_ssh_pass="123456"

    [web3]
    192.168.10.19[5:7]
    [web3:vars]
    ansible_ssh_user=root ansible_ssh_pass="123456" ansible_ssh_port=22

    2.2、基于密钥连接
    主机开启密钥认证方式
    ssh-keygen
    for i in {2,4,5}; do ssh-copy-id 192.168.10.19$i;done

    [web4]
    192.168.10.19[4:7]:22

    [web5]
    pay1 ansible_ssh_host=192.168.10.191 ansible_ssh_port=22
    pay2 ansible_ssh_host=192.168.10.192 ansible_ssh_port=22
    pay4 ansible_ssh_host=192.168.10.194 ansible_ssh_port=22

    2.3、主机组的使用
    #主机组变量名+主机组
    [web3]
    192.168.10.19[5:7]
    [web3:vars]
    ansible_ssh_user=root ansible_ssh_pass="123456" ansible_ssh_port=22

    #主机组子群组
    [webserver:children]
    web4
    web5

    2.4、临时指定inventory
    #定义主机清单
    cat /etc/dockers
    [dockers]
    192.168.10.192 ansible_ssh_pass='123456'

    #指定主机清单执行命令
    ansible dockers -m ping -i /etc/dockers -o
    192.168.10.192 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}
    ansible 入门
    ansible是一款简单的运维自动化工具,只需ssh协议连接即可进行系统管理,自动化执行命令,部署等
    特点:
    1、不需要单独安装客户端,不需启动任何服务
    2、是python中一套完整的自动化执行任务模块
    3、playbook采用yaml配置,对于自动化任务执行一目了然
    组成结构:
    a、ansible,命令工具,核心执行工具,一次性或临时执行的操作都是通过该命令
    b、ansible playbook 任务剧本,编排定义ansible任务集的配置文件,顺序依次执行,yaml格式
    c、inventory 管理主机的清单,默认/etc/ansible/hosts
    d、modules 执行命令的功能模块
    e、plugins 插件
    f、api 提供给第三方程序调用的应用程序编程接口

    环境:
    server:192.168.10.193
    client:192.168.10.191 192.168.10.192 192.168.10.194 192.168.10.195 192.168.10.196
    centos7.6

    1、配置epol源并安装ansible
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum clean all
    yum makecache
    yum -y install ansible
    ansible --version

    2、ansible inventory文件
    #inventory通常用于定义要管理的主机的认证信息,如ssh登录用户名密码及key等相关信息.可以同时操作一个组的多台主机,组和主机组之间的关系都是通过inventory文件配置,/etc/ansible/hosts

    2.1、基于密码连接
    cat /etc/ansible/hosts
    [web1]
    192.168.10.191 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
    192.168.10.192 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
    [web2]
    192.168.10.19[4:6] ansible_ssh_user=root ansible_ssh_pass="123456"

    [web3]
    192.168.10.19[5:7]
    [web3:vars]
    ansible_ssh_user=root ansible_ssh_pass="123456" ansible_ssh_port=22

    2.2、基于密钥连接
    主机开启密钥认证方式
    ssh-keygen
    for i in {2,4,5}; do ssh-copy-id 192.168.10.19$i;done

    [web4]
    192.168.10.19[4:7]:22

    [web5]
    pay1 ansible_ssh_host=192.168.10.191 ansible_ssh_port=22
    pay2 ansible_ssh_host=192.168.10.192 ansible_ssh_port=22
    pay4 ansible_ssh_host=192.168.10.194 ansible_ssh_port=22

    2.3、主机组的使用
    #主机组变量名+主机组
    [web3]
    192.168.10.19[5:7]
    [web3:vars]
    ansible_ssh_user=root ansible_ssh_pass="123456" ansible_ssh_port=22

    #主机组子群组
    [webserver:children]
    web4
    web5

    2.4、临时指定inventory
    #定义主机清单
    cat /etc/dockers
    [dockers]
    192.168.10.192 ansible_ssh_pass='123456'

    #指定主机清单执行命令
    ansible dockers -m ping -i /etc/dockers -o
    192.168.10.192 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}
    ansible 入门
    ansible是一款简单的运维自动化工具,只需ssh协议连接即可进行系统管理,自动化执行命令,部署等
    特点:
    1、不需要单独安装客户端,不需启动任何服务
    2、是python中一套完整的自动化执行任务模块
    3、playbook采用yaml配置,对于自动化任务执行一目了然
    组成结构:
    a、ansible,命令工具,核心执行工具,一次性或临时执行的操作都是通过该命令
    b、ansible playbook 任务剧本,编排定义ansible任务集的配置文件,顺序依次执行,yaml格式
    c、inventory 管理主机的清单,默认/etc/ansible/hosts
    d、modules 执行命令的功能模块
    e、plugins 插件
    f、api 提供给第三方程序调用的应用程序编程接口

    环境:
    server:192.168.10.193
    client:192.168.10.191 192.168.10.192 192.168.10.194 192.168.10.195 192.168.10.196
    centos7.6

    1、配置epol源并安装ansible
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum clean all
    yum makecache
    yum -y install ansible
    ansible --version

    2、ansible inventory文件
    #inventory通常用于定义要管理的主机的认证信息,如ssh登录用户名密码及key等相关信息.可以同时操作一个组的多台主机,组和主机组之间的关系都是通过inventory文件配置,/etc/ansible/hosts

    2.1、基于密码连接
    cat /etc/ansible/hosts
    [web1]
    192.168.10.191 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
    192.168.10.192 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass="123456"
    [web2]
    192.168.10.19[4:6] ansible_ssh_user=root ansible_ssh_pass="123456"

    [web3]
    192.168.10.19[5:7]
    [web3:vars]
    ansible_ssh_user=root ansible_ssh_pass="123456" ansible_ssh_port=22

    2.2、基于密钥连接
    主机开启密钥认证方式
    ssh-keygen
    for i in {2,4,5}; do ssh-copy-id 192.168.10.19$i;done

    [web4]
    192.168.10.19[4:7]:22

    [web5]
    pay1 ansible_ssh_host=192.168.10.191 ansible_ssh_port=22
    pay2 ansible_ssh_host=192.168.10.192 ansible_ssh_port=22
    pay4 ansible_ssh_host=192.168.10.194 ansible_ssh_port=22

    2.3、主机组的使用
    #主机组变量名+主机组
    [web3]
    192.168.10.19[5:7]
    [web3:vars]
    ansible_ssh_user=root

    ansible_ssh_pass="123456"

    ansible_ssh_port=22

    #主机组子群组
    [webserver:children]
    web4
    web5

    2.4、临时指定inventory
    #定义主机清单
    cat /etc/dockers
    [dockers]
    192.168.10.192 ansible_ssh_pass='123456'

    #指定主机清单执行命令
    ansible dockers -m ping -i /etc/dockers -o
    192.168.10.192 | SUCCESS => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"}, "changed": false, "ping": "pong"}

      #内置参数


    3、ansible ad-hoc
    #ad-hoc 临时的,指在ansible中快速执行,并且不需要保存的命令.就是执行简单的命令(一条命令),而复杂的命令则为playbook,类似于saltstack的state sls状态文件

    3.1、命令格式
    Usage: ansible <host-pattern> [options]
    -a MODULE_ARGS   #模块参数
    -C, --check  #检查语法
    -f FORKS #并发
    --list-hosts #列出主机列表
    -m MODULE_NAME #模块名字
    -o 使用精简的输出

    ansible web1 -m shell -a 'uptime' -o
    192.168.10.192 | CHANGED | rc=0 | (stdout)  15:49:55 up 7 days,  6:11,  2 users,  load average: 0.00, 0.01, 0.05
    192.168.10.191 | CHANGED | rc=0 | (stdout)  15:49:55 up 7 days,  6:12,  3 users,  load average: 0.00, 0.01, 0.05
    #ansible--需执行命令的目标主机或群组--选项指定用到模块--模块--选项指定模块中要用的参数--模块中的参数(shell命令)
    command target option module option cmd
    #不加-m,默认执行shell命令,-a必有,其它自取即用-o精简输出

    3.2、host-pattern格式
    目标主机,主机组匹配方式

    --主机匹配---
    ansible 192.168.10.191 -m ping
    #多台主机用逗号隔开,所有主机用 all表示

    --主机组匹配---
    [root@pay3 ~]# ansible web1 --list  #查看组信息, 包含哪些主机
      hosts (2):
        192.168.10.191
        192.168.10.192

    ansible 'web2:!web3' -m ping -o    #匹配web2中有,但web3组中没有的所有主机
    ansible 'web2:&web4' -m ping -o    #匹配两个组都有的主机,并集
    ansible 'web2:web3' -m ping -o    #匹配两个组所有的主机

  • 相关阅读:
    OCP-052考试题库汇总(35)-CUUG内部解答版
    OCP-052考试题库汇总(34)-CUUG内部解答版
    018 ThreadLocal实现线程安全
    017 无锁与CAS
    016 原子类
    015 可见性问题与volatile
    014 锁重入
    013 synchronized的优化
    012 内置锁和synchronized
    011 线程安全性问题
  • 原文地址:https://www.cnblogs.com/xiefugui/p/12156613.html
Copyright © 2011-2022 走看看