云计算运维 · 第二阶段 · Ansible

学习b记 · 第二阶段

十三、Ansible

1、什么是Ansible?
    Ansible是一个自动化统一配置管理工具,自动化主要体现在Ansible集成了丰富模块以及功能组件,可以通过一个命令完成一系列的操作,进而能减少重复性的工作和维护成本,可以提高工作效率。

2、Ansible的架构
    1)连接插件connection plugins用于连接主机 用来连接被管理端
    2)核心模块core modules连接主机实现操作, 它依赖于具体的模块来做具体的事情
    3)自定义模块custom modules根据自己的需求编写具体的模块
    4)插件plugins完成模块功能的补充
    5)剧本playbookansible的配置文件,将多个任务定义在剧本中,由ansible自动执行
    6)主机清单inventor定义ansible需要操作主机的范围
最重要的一点是 ansible是模块化的 它所有的操作都依赖于模块
3、Ansible的执行流程
    1)Ansible读取playbook剧本,剧本中会记录对哪些主机执行哪些任务。
    2)首先Ansible通过主机清单找到要执行的主机,然后调用具体的模块。
    3)其次Ansible会通过连接插件连接对应的主机并推送对应的任务列表。
    4)最后被管理的主机会将Ansible发送过来的任务解析为本地Shell命令执行。
1、安装Ansible
    #1.安装epel源
    [root@m01 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    #2.安装Ansible
    [root@m01 ~]# yum install -y ansible
2、环境准备
    主机名		wanIP		lanIP		 角色
    m01		192.168.17.235	172.16.1.212 Ansible控制端
    web01	192.168.17.224	172.16.1.202 Ansible被控端
    web02	192.168.17.230	172.16.1.204 Ansible被控端
    nfs		192.168.17.225  172.16.1.203 Ansible被控端
    
3、配置文件详解 #/etc/ansible/ansible.cfg
    #inventory      = /etc/ansible/hosts      #主机列表配置文件
    #library        = /usr/share/my_modules/  #库文件存放目录
    #remote_tmp     = ~/.ansible/tmp          #临时py文件存放在远程主机目录
    #local_tmp      = ~/.ansible/tmp          #本机的临时执行目录
    #forks          = 5                       #默认并发数
    #sudo_user      = root                    #默认sudo用户
    #ask_sudo_pass = True                     #每次执行是否询问sudo的ssh密码
    #ask_pass      = True                     #每次执行是否询问ssh密码
    #remote_port    = 22                      #远程主机端口
    #host_key_checking = False                 #跳过检查主机指纹
    #log_path = /var/log/ansible.log           #ansible日志
    
4、Ansible Inventory#资产清单 就是放你要管理的主机地址
    /etc/ansible/hosts是ansible默认主机资产清单文件,用于定义被管理主机的认证信息, 例如ssh登录用户名、密码以及key相关信息。Inventory文件中填写需要被管理的主机与主机组信息。还可以自定义Inventory主机清单的位置,使用-i指定文件位置即可。   
5、基于密钥连接,需要先创建公钥和私钥,并下发公钥至被控端#还有两种不写了用这个就行
    #创建秘钥对
    [root@m01 ~]# ssh-keygen

    #推送公钥
    [root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
    [root@m01 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
    #方式一、主机+端口+密钥
    [webs]
    192.168.17.224
    192.168.17.230

    [root@m01 ~]# ansible webs -m ping -i ./hosts
    192.168.17.224 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": false,
        "ping": "pong"
    }
    192.168.17.230 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": false,
        "ping": "pong"
    }

    #方式二、别名+主机+端口+密钥
    [webs]
    web01 ansible_ssh_host=192.168.17.224 ansible_ssh_port=22
    web02 ansible_ssh_host=192.168.17.230

    [root@m01 ~]# ansible webs -m ping -i ./hosts
    web02 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": false,
        "ping": "pong"
    }
    web01 | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python"
        },
        "changed": false,
        "ping": "pong"
    }    

你可能感兴趣的:(运维,云计算,ansible)