• Linux 7 安装 Ansible 并作基本的配置


    安装前提条件:控制服务器可以通过 ssh 免密登录被控制服务器。

    一、安装 Ansible

    [root@xiejiaohui ~]# yum install -y ansible
    Loaded plugins: langpacks, search-disabled-repos
    ansible                                                  | 2.9 kB     00:00     
    rhel--server-dvd                                         | 4.3 kB     00:00     
    rhel-7-server-extras-rpms                                | 2.9 kB     00:00     
    (1/4): ansible/primary_db                                  | 5.3 kB   00:00     
    (2/4): rhel-7-server-extras-rpms/primary_db                |  80 kB   00:00     
    (3/4): rhel--server-dvd/group_gz                           | 146 kB   00:00     
    (4/4): rhel--server-dvd/primary_db                         | 4.2 MB   00:00     
    Resolving Dependencies
    --> Running transaction check
    ---> Package ansible.noarch 0:2.7.1-1.el7ae will be installed
    --> Processing Dependency: sshpass for package: ansible-2.7.1-1.el7ae.noarch
    --> Processing Dependency: python-passlib for package: ansible-2.7.1-1.el7ae.noarch
    --> Processing Dependency: python-paramiko for package: ansible-2.7.1-1.el7ae.noarch
    --> Processing Dependency: python-jmespath for package: ansible-2.7.1-1.el7ae.noarch
    --> Processing Dependency: python-httplib2 for package: ansible-2.7.1-1.el7ae.noarch
    --> Processing Dependency: python-cryptography for package: ansible-2.7.1-1.el7ae.noarch
    --> Running transaction check
    ---> Package python-httplib2.noarch 0:0.9.2-1.el7 will be installed
    ---> Package python-paramiko.noarch 0:2.1.1-5.el7 will be installed
    --> Processing Dependency: python2-pyasn1 for package: python-paramiko-2.1.1-5.el7.noarch
    ---> Package python-passlib.noarch 0:1.6.5-2.el7 will be installed
    ---> Package python2-cryptography.x86_64 0:1.7.2-2.el7 will be installed
    --> Processing Dependency: python-cffi >= 1.4.1 for package: python2-cryptography-1.7.2-2.el7.x86_64
    --> Processing Dependency: python-idna >= 2.0 for package: python2-cryptography-1.7.2-2.el7.x86_64
    --> Processing Dependency: python-enum34 for package: python2-cryptography-1.7.2-2.el7.x86_64
    ---> Package python2-jmespath.noarch 0:0.9.0-4.el7ae will be installed
    ---> Package sshpass.x86_64 0:1.06-2.el7 will be installed
    --> Running transaction check
    ---> Package python-cffi.x86_64 0:1.6.0-5.el7 will be installed
    --> Processing Dependency: python-pycparser for package: python-cffi-1.6.0-5.el7.x86_64
    ---> Package python-enum34.noarch 0:1.0.4-1.el7 will be installed
    ---> Package python-idna.noarch 0:2.4-1.el7 will be installed
    ---> Package python2-pyasn1.noarch 0:0.1.9-7.el7 will be installed
    --> Running transaction check
    ---> Package python-pycparser.noarch 0:2.14-1.el7 will be installed
    --> Processing Dependency: python-ply for package: python-pycparser-2.14-1.el7.noarch
    --> Running transaction check
    ---> Package python-ply.noarch 0:3.4-11.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ================================================================================
     Package               Arch    Version         Repository                  Size
    ================================================================================
    Installing:
     ansible               noarch  2.7.1-1.el7ae   ansible                     11 M
    Installing for dependencies:
     python-cffi           x86_64  1.6.0-5.el7     rhel--server-dvd           218 k
     python-enum34         noarch  1.0.4-1.el7     rhel--server-dvd            52 k
     python-httplib2       noarch  0.9.2-1.el7     rhel-7-server-extras-rpms  115 k
     python-idna           noarch  2.4-1.el7       rhel--server-dvd            94 k
     python-paramiko       noarch  2.1.1-5.el7     rhel--server-dvd           268 k
     python-passlib        noarch  1.6.5-2.el7     rhel-7-server-extras-rpms  488 k
     python-ply            noarch  3.4-11.el7      rhel--server-dvd           123 k
     python-pycparser      noarch  2.14-1.el7      rhel--server-dvd           105 k
     python2-cryptography  x86_64  1.7.2-2.el7     rhel--server-dvd           503 k
     python2-jmespath      noarch  0.9.0-4.el7ae   ansible                     39 k
     python2-pyasn1        noarch  0.1.9-7.el7     rhel--server-dvd           100 k
     sshpass               x86_64  1.06-2.el7      rhel-7-server-extras-rpms   21 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package (+12 Dependent packages)
    
    Total download size: 13 M
    Installed size: 70 M
    Downloading packages:
    (1/13): python-enum34-1.0.4-1.el7.noarch.rpm               |  52 kB   00:00     
    (2/13): python-cffi-1.6.0-5.el7.x86_64.rpm                 | 218 kB   00:00     
    (3/13): python-idna-2.4-1.el7.noarch.rpm                   |  94 kB   00:00     
    (4/13): python-httplib2-0.9.2-1.el7.noarch.rpm             | 115 kB   00:00     
    (5/13): python-paramiko-2.1.1-5.el7.noarch.rpm             | 268 kB   00:00     
    (6/13): python-ply-3.4-11.el7.noarch.rpm                   | 123 kB   00:00     
    (7/13): python-pycparser-2.14-1.el7.noarch.rpm             | 105 kB   00:00     
    (8/13): python2-cryptography-1.7.2-2.el7.x86_64.rpm        | 503 kB   00:00     
    (9/13): python-passlib-1.6.5-2.el7.noarch.rpm              | 488 kB   00:00     
    (10/13): sshpass-1.06-2.el7.x86_64.rpm                     |  21 kB   00:00     
    (11/13): ansible-2.7.1-1.el7ae.noarch.rpm                  |  11 MB   00:00     
    (12/13): python2-jmespath-0.9.0-4.el7ae.noarch.rpm         |  39 kB   00:00     
    (13/13): python2-pyasn1-0.1.9-7.el7.noarch.rpm             | 100 kB   00:00     
    --------------------------------------------------------------------------------
    Total                                               37 MB/s |  13 MB  00:00     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : python2-pyasn1-0.1.9-7.el7.noarch                           1/13 
      Installing : python2-jmespath-0.9.0-4.el7ae.noarch                       2/13 
      Installing : python-httplib2-0.9.2-1.el7.noarch                          3/13 
      Installing : sshpass-1.06-2.el7.x86_64                                   4/13 
      Installing : python-enum34-1.0.4-1.el7.noarch                            5/13 
      Installing : python-passlib-1.6.5-2.el7.noarch                           6/13 
      Installing : python-ply-3.4-11.el7.noarch                                7/13 
      Installing : python-pycparser-2.14-1.el7.noarch                          8/13 
      Installing : python-cffi-1.6.0-5.el7.x86_64                              9/13 
      Installing : python-idna-2.4-1.el7.noarch                               10/13 
      Installing : python2-cryptography-1.7.2-2.el7.x86_64                    11/13 
      Installing : python-paramiko-2.1.1-5.el7.noarch                         12/13 
      Installing : ansible-2.7.1-1.el7ae.noarch                               13/13 
      Verifying  : python-idna-2.4-1.el7.noarch                                1/13 
      Verifying  : python-pycparser-2.14-1.el7.noarch                          2/13 
      Verifying  : python-paramiko-2.1.1-5.el7.noarch                          3/13 
      Verifying  : python-ply-3.4-11.el7.noarch                                4/13 
      Verifying  : python-passlib-1.6.5-2.el7.noarch                           5/13 
      Verifying  : python-enum34-1.0.4-1.el7.noarch                            6/13 
      Verifying  : ansible-2.7.1-1.el7ae.noarch                                7/13 
      Verifying  : python-cffi-1.6.0-5.el7.x86_64                              8/13 
      Verifying  : sshpass-1.06-2.el7.x86_64                                   9/13 
      Verifying  : python-httplib2-0.9.2-1.el7.noarch                         10/13 
      Verifying  : python2-pyasn1-0.1.9-7.el7.noarch                          11/13 
      Verifying  : python2-jmespath-0.9.0-4.el7ae.noarch                      12/13 
      Verifying  : python2-cryptography-1.7.2-2.el7.x86_64                    13/13 
    
    Installed:
      ansible.noarch 0:2.7.1-1.el7ae                                                
    
    Dependency Installed:
      python-cffi.x86_64 0:1.6.0-5.el7                                              
      python-enum34.noarch 0:1.0.4-1.el7                                            
      python-httplib2.noarch 0:0.9.2-1.el7                                          
      python-idna.noarch 0:2.4-1.el7                                                
      python-paramiko.noarch 0:2.1.1-5.el7                                          
      python-passlib.noarch 0:1.6.5-2.el7                                           
      python-ply.noarch 0:3.4-11.el7                                                
      python-pycparser.noarch 0:2.14-1.el7                                          
      python2-cryptography.x86_64 0:1.7.2-2.el7                                     
      python2-jmespath.noarch 0:0.9.0-4.el7ae                                       
      python2-pyasn1.noarch 0:0.1.9-7.el7                                           
      sshpass.x86_64 0:1.06-2.el7                                                   
    
    Complete!
    [root@xiejiaohui ~]# 

    二、修改配置文件ansible.cfg

    [root@workstation ~]# su - student
    [student@workstation ~]$ cd
    [student@workstation ~]$ pwd
    /home/student
    [student@workstation ~]$ mkdir ansible
    [student@workstation ~]$ cd ansible/
    [student@workstation ansible]$ cp /etc/ansible/ansible.cfg /home/student/ansible/
    [student@workstation ansible]$ vim ansible.cfg
    
    [student@workstation ansible]$ cat ansible.cfg |grep -v ^#|grep -v ^$
    [defaults]
    inventory      = /home/student/ansible/inventory
    ask_pass      = False
    roles_path    = /home/student/ansible/roles:/etc/ansible/roles:/usr/share/ansible/roles
    remote_user = student
    [inventory]
    [privilege_escalation]
    become=True
    become_method=sudo
    become_user=root
    become_ask_pass=False
    [paramiko_connection]
    [ssh_connection]
    [persistent_connection]
    [accelerate]
    [selinux]
    [colors]
    [diff]
    [student@workstation ansible]$ 

    三、配置 inventory 文件

    [student@workstation ansible]$ vim inventory
    [student@workstation ansible]$ cat inventory 
    [dev]
    servera
    
    [test]
    serverb
    
    [prod]
    serverc
    serverd
    
    [webservers:children]
    prod
    [student@workstation ansible]$ 

    四、修改客户端 sudoers 文件

    登录被控制的电脑

    $ssh root@servera

    servera 修改文件 /etc/sudoers 在最后新增一行

    student    ALL=(ALL)    NOPASSWD: ALL

    ## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
    #includedir /etc/sudoers.d
    student     ALL=(ALL)    NOPASSWD: ALL

    五、验证是否配置正确,通过ping 命令测试

    [student@workstation ansible]$ ansible all -m ping
    servera | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    serverb | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    serverc | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    serverd | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    [student@workstation ansible]$ ansible dev -m ping
    servera | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    [student@workstation ansible]$ ansible test -m ping
    serverb | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    [student@workstation ansible]$ ansible prod -m ping
    serverd | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    serverc | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    [student@workstation ansible]$ ansible webservers -m ping
    serverd | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    serverc | SUCCESS => {
        "changed": false, 
        "ping": "pong"
    }
    [student@workstation ansible]$ 

    列出所有主机

    [student@workstation ansible]$ ansible all --list-hosts
      hosts (4):
        servera
        serverb
        serverc
        serverd
    [student@workstation ansible]$ 
  • 相关阅读:
    友链
    P2572 [SCOI2010]序列操作
    「THP3考前信心赛」解题报告
    DP中的树上边/点覆盖问题
    P3413 SAC#1
    luoguP6754 [BalticOI 2013 Day1] Palindrome-Free Numbers
    睿智错误
    常见套路?
    奇怪的点子
    最近做过一些比较好的题
  • 原文地址:https://www.cnblogs.com/xiejh/p/13055104.html
Copyright © 2020-2023  润新知