Ansible及Ansible Tower安装

Posted 沙恩说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible及Ansible Tower安装相关的知识,希望对你有一定的参考价值。


  • 一、架构介绍

    • 1. 基础环境
      Linux版本:CentOS 7.5
      Ansible
      版本:2.5.3
      Ansible Tower
      版本:
      Ansible 
      服务器:共三台,ans-01ans-02ans-03
      使用VMware Fusion虚拟化环境进行模拟,所有服务器2 Cores2GB RAM

    • 2. Ansible Tower架构


Ansible本质上是一个进行了封装的Shell。优点在于它是去中心化的工具,可以直接通过ssh管理远程主机,实现无Agent的部署(ssh+python环境已经原生集成在Linux中)。
Ansible
的缺点也在于其去中心化的特点,本身不支持高可用和分布式架构,无法实现Server-Proxy-Client的架构。在比较复杂或者多区域的网络区域中,无法实现统一的集中式管理(如多个ansible管理端的配置同步),也没有前端UI,对ansible的技能要求比较高。
Redhat
提供为Ansible提供了一个前端UIAnsible Tower。使用它可以免费管理10台以内的主机。
Ansible Tower
提供了通过WEB端管理其他主机的方式。本身也支持Cluster群集方式(需要在每个节点上都安装ansibleansible tower),通过修改配置文件来实现多个Ansible Tower组成一个或者多个群集。
Ansible Tower
是目前唯一(除了自研发方式外)能够实现底层Ansible高可用、水平扩展的解决方案。Ansible Tower的功能比较简单,群集配置逻辑(Instance Group分组)通过配置文件实现,没有一个前端维护的界面。因此每次重新配置逻辑都需要在更新配置文件后重跑ansible towersetup文件。

  • 二、Ansible安装

    • 1. 配置AnsibleYUM

Ansible及Ansible Tower安装


rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

    • 2. 安装Ansible

Ansible及Ansible Tower安装


yum install ansible
验证ansible --version

    • 3. 生成公钥

Ansible及Ansible Tower安装


ssh-keygen -N "" -b 4096 -t rsa -C "Ansible Public Key"
生成的秘钥默认为id_rsa,可以通过-f参数指定其他路径,但需要修改ssh_config的默认秘钥文件名,才能实现免密登陆。


    • 4. 复制公钥

Ansible及Ansible Tower安装


ssh-copy-id -i /root/.ssh/id_rsa root@localhost

    • 5. 添加主机到Ansiblehosts列表

Ansible及Ansible Tower安装


修改/etc/ansible/hosts文件,将管理服务器的信息加入到这个文件,也可以按需分组。
ans-[01:99] 
表示ans-01, ans-02, ... , ans-99所有的服务器

    • 6.验证免密码登陆及Ansible管理功能

Ansible及Ansible Tower安装


运行ssh host或者ansible远程执行命令(如ansible "localhost" -m command -a "ip addr")来检测是否可进行免密码登陆。

    • 7. 对于其他要进行管理的服务器,可以重复第4步,进行公钥下发,下发后,便可以实现通过ssh进行远程操作。ansible的远程管理需要进行一定的配置后才能进行。

    • 8.重复上述步骤,使得ans-01ans-02ans-03可以相互进行管理(即:每台服务器的/root/.ssh/authorized_keys文件存在这三台服务器的密钥信息)。

  • 三、Ansible Tower安装

    • 1. 下载Ansible Tower

Ansible及Ansible Tower安装


ans-01(或者任意一台ansible服务器上)下载Ansible Towertar包,路径为https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz
wget https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz

    • 2. 解压tar

Ansible及Ansible Tower安装


tar -xzf ansible-tower-setup-latest.tar.gz

    • 3. 修改Ansible Tower的配置文件

      • 1Ansible Tower配置文件
        Ansible Tower配置文件位于解压目录的根目录下,文件名为inventory。所有Ansible Tower的管理员密码、数据源PostgreSQL、消息队列RabbitMQ以及Instance Group配置都通过该文件维护。详细的配置文档可查看:https://docs.ansible.com/ansible-tower/latest/html/administration/clustering.html

      • 2 InstanceInstance Group

Ansible及Ansible Tower安装


所谓的Instance就是具体执行Ad-Hoc命令或者PlaybookAnsible服务器,一个或者多个服务器组成一个Instance Group;一个Instance Group包含一台或者多台的Instance,一个Instance可以属于不同的Instace Group(即多对多的关系)。
可以按一定的维度(Job TemplatesInventoriesOrganizations)和Instance Group进行关联,使得按区域、按功能的分组管理。
默认必须存在一个叫做Tower的全局Instance Group,且需要至少有一个Instance。这个Instance Group中的服务器负责一些全局管理操作(清理过期任务),或者作为执行Ad-Hoc命令或者Playbook的默认Instance Group(如未指定其他Instance Group的话)。

      • 3)修改配置文件
        Instance Group分组直接在Inventory中修改,以[instance_group_NAME]进行分组。
        另外还需要为Ansible Tower指定数据库和消息队列名称(如没有安装数据库,Ansible Tower会自行安装)。
        如果使用公共的数据库,需要将其加入[database]字段中。
        该配置文件的其他配置保持默认,或参考https://docs.ansible.com/ansible-tower/latest/html/administration/clustering.html进行修改。

        以下是一个inventorydemo文件。

        [tower]
        ans-01

        [instance_group_ans1]
        ans-01

        [instance_group_ans2]
        ans-02

        [instance_group_ans3]
        ans-03

        [instance_group_ans12]
        ans-01
        ans-02

        [instance_group_ans13]
        ans-01
        ans-03

        [instance_group_ans23]
        ans-02
        ans-03

        [instance_group_ansALL]
        ans-01
        ans-02
        ans-03

        [database]
        ans-01

        [all:vars]
        admin_password='admin'
        pg_host='ans-01'
        pg_port='5432'

        pg_database='awx'
        pg_username='awx'
        pg_password='awx'

        rabbitmq_port=5672
        rabbitmq_vhost=tower
        rabbitmq_username=tower
        rabbitmq_password='tower'
        rabbitmq_cookie=cookiemonster

        # Needs to be true for fqdns and ip addresses
        rabbitmq_use_long_name=false

        # Isolated Tower nodes automatically generate an RSA key for authentication;
        # To disable this behavior, set this value to false
        # isolated_key_generation=true


    • 4. 安装Ansible Tower

      • 1)运行setup.sh

Ansible及Ansible Tower安装


切换到解压后的目录(inventory文件的同级目录),运行setup.sh

    • 2)安装
      安装过程中,Ansible会通过Playbook安装Ansible Tower。整个过程中会检测相关组件是否安装,并自动安装配置,可能需要10分钟左右。
      安装过程中可能会出现一些fail,主要是因为selinux或者防火墙的问题。可以通过下列命令关闭并禁止自动启动(也可以配置防火墙规则解决)
      getenforce #查看Selinux
      状态,通过修改/etc/selinux/config,禁用selinux
      systemctl stop firewalld.service #停止firewall

      systemctl disable firewalld.service #禁止firewall开机启动


      如果没有配置本地repo,下载Tower RPM时可能会比较慢。如遇到安装失败,解决相应问题后,重新运行setup.sh即可。

    • 3)完成安装

Ansible及Ansible Tower安装


如显示上述样式的输出结果,则表明Ansible已经安装成功。

    • 4)验证安装


通过访问三台主机的http服务,即可进入ansible tower的管理界面。
三个主机都提供了前端web服务和API调用,后端的数据一致。

    • 5)安装完成


导入license后,即可进入Ansible Tower的管理控制台。


以上是关于Ansible及Ansible Tower安装的主要内容,如果未能解决你的问题,请参考以下文章

Ansible-tower安装

ansible自动化运维工具 图形化---tower

Ansible Tower实战大全:第一篇

Ansible Tower01

Ansible安装配置及使用

Ansible-Tower自动化运维管理环境