加载中...

Ansible-Tower 部署笔记


0x00 前言

作为时下最流行的自动化运维工具之一,Ansible 在业界应该是无人不知无人不晓的了。

作为一款轻量化的开源软件,它只需要简单地通过 SSH(对Linux平台)或 PowerShell(对Windows平台),无需被控主机安装客户端,就能实现远程操控、部署、升级等配置管理。

通过编写简单的 playbooks(yml) 脚本就能轻松对成千上万的主机进行区域管控、日常巡检等任务。

而 Ansible-Tower (旧称 AWX)作为其配套界面,使得 Ansible 更容易上手。

这里提供一些官方资料:

0x10 部署说明

本文主要记录了在 ubuntu 上部署 Ansible 和 Ansible-Tower 的过程。

虽然 Ansible-Tower 支持在多种操作系统版本上部署,但对于 ubuntu 只支持 14.0 和 16.0 两个版本(而 Ansible 则是支持到 ubuntu 18.0)。

为了可以同时安装 Ansible 和 Ansible-Tower ,本文选择了 ubuntu 16.0 系统进行安装。

0x11 安装环境

  • 操作系统:Ubuntu 16.04.5 LTS
  • 预装软件:python 2.7、openssh

0x12 安装清单

  • pywinrm (要求版本至少为 0.2.2,若不管理 windows 机器则无需安装)
  • Ansible-2.7.5 ( 要求 python 版本 2.6 或 2.7 )
  • PostgreSQL-9.6
  • Ansible-Tower-3.3.3 ( 要求 Ansible 版本至少为 2.2,PostgreSQL版本至少为 9.6 )

预装组件要求可查看官方手册指引https://docs.ansible.com/ansible-tower/latest/html/quickinstall/prepare.html

0x20 安装步骤

注意下述步骤直接依次复制执行即可完成整个部署流程,其中对于命令行前缀:

  • 【#】表示 root 用户
  • 【$】表示普通用户

0x21 安装 pywinrm(可选)

# apt install python-pip            # 安装 pip
# pip install --upgrade pip            # 更新 pip
# pip install "pywinrm>=0.2.2"        # 使用 pip 安装 pywinrm,此模块用于远程管理 windows 机器

0x22 添加相关用户并授权

# adduser ansible                    # 添加 ansible 专用用户
# chmod u+w /etc/sudoers            # 修改 sudo 配置文件为可写
# vi /etc/sudoers                    # 修改 sudo 配置文件,对 ansible 和 postgres 用户授权,便于后面安装
root ALL=(ALL:ALL) ALL
ansible ALL=(ALL:ALL) ALL
awx ALL=(ALL:ALL) ALL                # 安装 Ansible-Tower 时自动创建的用户
postgres ALL=(ALL:ALL) ALL            # 安装 PostgreSQL 时自动创建的用户


# chmod u-w /etc/sudoers

0x23 安装 Ansbile-2.7.5

相关过程整理自官方手册https://ansible-tran.readthedocs.io/en/latest/docs/intro_installation.html#apt-ubuntu

# su - ansible                                        # 切换到 ansible 用户
$ sudo apt-get install software-properties-common     # 在早期 Ubuntu 发行版中, “software-properties-common” 名为 “python-software-properties”,根据实际情况修改
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible                        # 安装
$ ansible --version                                    # 若安装成功,核验版本
ansible 2.7.5
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/ansible/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]

关于 Asible 的相关配置

  • 配置文件位置为 /etc/ansible/ansible.cfg
  • 主机清单文件为 /etc/ansible/hosts (用于配置主机分组、连接方式等)
  • playbooks 目录位置默认为 /etc/ansible/ ,若目录不存在,可手工创建

0x24 安装 PostgreSQL-9.6

部分过程参考自 CSDNhttps://blog.csdn.net/zpf336/article/details/50843674

# 注意 Ubuntu 16.0 默认的 PostgreSQL 安装源是 9.5 版本的,不符合要求,需要更新安装源后再安装
$ sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main"
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install postgresql-9.6


# 安装完成后会自动新增数据库用户 postgres
$ sudo su postgres                                    
$ psql postgres                                 # 登录数据库
ALTER USER postgres with PASSWORD 'postgres';     # 修改 postgres 用户的数据库密码
\q                                                 # 退出数据库


# 修改数据库配置( 默认只允许本地连接,由于只有 Ansible-Tower 用,因此无需更改相关连接配置 )
$ vi /etc/postgresql/<pg_version>/main/postgresql.conf    # 此处的 <pg_version> 根据实际安装的 PostgreSQL 版本修改
password_encryption = on                                # 去掉注释,启用密码验证登录方式


# 重启数据库使配置生效
$ sudo systemctl unmask postgresql
$ sudo systemctl restart postgresql


$ psql -U postgres -h 127.0.0.1                        # 测试本地账密登录
CREATE USER ansible WITH PASSWORD 'ansible';         # 创建 Ansible-Tower 用的数据库用户 ansible
CREATE DATABASE tower OWNER ansible;                 # 创建 Ansible-Tower 用的数据库 tower
GRANT ALL PRIVILEGES ON DATABASE tower TO ansible;    # 把 tower 库的所有权限授权给 ansible 用户
\q                                                    # 退出数据库


# 测试使用 ansible 用户登录 tower 数据库:
$ psql -U ansible -h 127.0.0.1 -d tower
\q


# 可选(需图形界面支持)
$ sudo apt-get install pgadmin3        # 可安装 PostgreSQL 库的图形客户端
$ pgadmin3                             # 启动客户端

0x25 安装 Ansible-Tower-3.3.3

相关过程整理自官方手册https://docs.ansible.com/ansible-tower/latest/html/quickinstall/download_tower.html

部分过程参考自 CSDNhttps://blog.csdn.net/CodyGuo/article/details/78875717

在 ubuntu 系统下,Ansible-Tower 只能下载 Ansible 的 playbooks 脚本,由 Ansible 在线安装。

playbooks 脚本可从 此处 提取(目前最后的 latest 版是3.3.3)。

下载最后版本 ansible-tower-setup-latest.tar.gz 后,上传到任意目录即可。

# 上传到 ansible-tower-setup-latest.tar.gz 到 /tmp 目录
$ sudo su ansible                                    # 切换 ansible 用户执行安装过程
$ tar xvzf ansible-tower-setup-latest.tar.gz        # 解包
$ cd ansible-tower-setup-<tower_version>            # tower_version 根据实际的 Ansible-Tower 版本号修改
$ vi inventory                                         # 修改安装配置,根据前面流程设置的参数对号入座即可
[tower]
localhost ansible_connection=local

[database]

[all:vars]
admin_password='admin'
pg_host='127.0.0.1'
pg_port='5432'
pg_database='tower'
pg_username='ansible'
pg_password='ansible'

rabbitmq_username=tower
rabbitmq_password='admin'
rabbitmq_cookie=cookiemonster




# 执行安装
$ sudo ./setup.sh

0x26 Ansible-Tower授权

  • 安装成功后,可通过访问 https://<host_ip>/ 登录 Ansible-Tower (只能使用 HTTPS 协议
  • 登录账密在前面安装时已配置为:admin/admin (登录成功后,可以在【Users】里面修改)
  • 登录成功后需要导入 License 授权,License 可以在官网申请,官方提供了 10 个管理节点的 免费 License

0x30 附:被控主机为 Windows 时的额外配置

为了控制 Windows 主机,作为被控端的 Windows 必须具备以下几个条件:

  • 操作系统版本限制为:桌面版 Windows 7、8.1、10 ;服务器版 Windows Server 2008、2012、2016
  • Windows上必须已经安装了 PowerShell 3.0 或更新版本
  • Windows上必须已经安装了 .NET Framework 4.0 或更新版本
  • WinRM 服务已经被创建并启动服务,相关服务端口没有被防火墙等拦截

相关内容参考自

0x31 查看 PowerShell 与 .NET 版本并升级

  • 运行 PowerShell (注意不是 CMD,一般 Win8 之后都默认安装)
  • 输入命令 Get-Host 可查看当前 PowerShell 版本
  • 输入命令 $PSVersionTable.CLRVersion 可查看当前 .NET Framework 版本
  • 若 PowerShell 版本不满足要求,可参考 此处 的升级步骤进行升级

0x32 安装并查看 WinRM 服务

  • 详细安装步骤可参考 这里
  • 为方便起见,Ansible 官方已提供了 WinRM 的自动安装与配置脚本:https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1
  • 下载脚本后,在 PowerShell 执行命令即可完成安装: powershell.exe -ExecutionPolicy ByPass -File ConfigureRemotingForAnsible.ps1
  • 安装完成后,输入命令 winrm enumerate winrm/config/Listenerwinrm qc 可查看 WinRM 的服务状态
  • 确认 WinRM 正在监听 HTTPS 5986 端口即配置成功,注意防火墙也要开放相关端口

0x33 Ansible 测试 WinRM 连接

注意,Ansible 主机必须已安装 pywinrm,相关步骤详见 这里

测试方法:修改 Ansible 主机的配置文件 /etc/ansible/hosts,在其末尾添加一行(其中 ${win_ip}${win_username}${win_password} 需根据实际情况修改):

${win_ip} ansible_user="${win_username}" ansible_password="${win_password}" ansible_port="5986" ansible_connection="winrm" ansible_winrm_server_cert_validation="ignore" ansible_winrm_transport="ssl"

然后执行命令 ansible ${win_ip} -m win_ping 即可,若响应为 pong 则配置成功:


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
  目录