ansible、ansible tower的安装以及基本使用

任务目标:

1.linux使用ansible框架写一个示例脚本
2.ansibleui界面调用第一步的脚本执行

目录

  • 一、前置说明:
    • 名词解释
    • 环境说明
  • 二、ansible框架
        • 安装ansible
        • 配置ansible
        • 使用ansible执行脚本
        • 编写playbook文件并用ansible运行:
  • 三、ansible tower可视化界面
        • 获取ansible tower的安装包以及解压
        • 配置
        • 安装
        • 登陆可视化界面
  • 四、本地脚本导入tower
        • 本地准备工作
        • 创建本地工程
        • tower导入本地工程
          • 创建工程
          • 主机清单
          • 创建模板
          • 启动运行
          • 补充说明
        • 参考链接:

一、前置说明:

本文档主要讲述如何使用ansible以及Tower完成服务器集群的最基础的管理工作。本文基于测试学习环境下使用,所以关闭防火墙等,不配置安全证书等。

名词解释

**ansible:**是一款运维管理框架,用于操作集群服务使用,方便集群的管理;其最大的特点就是只需要在主操作服务器上安装既可,不需要对被操作服务器进行安装操作。

**tower:**是ansible框架的一个可视化界面,方便运维管理人员安装使用;它的安装,仅仅在安装了ansible的主操作服务器上安装即可,同样不需要对被操作服务器进行安装操作。

环境说明

我这里是单节点集群,所以这里仅有一台虚拟机用于操作,主要的服务器与被操作服务器都是一台机器;

  • linux内核版本

ansible、ansible tower的安装以及基本使用_第1张图片

  • CentOs版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C5kFoYXS-1598260343536)(ansible及其UI.assets/image-20200824144855982.png)]

  • ansible版本

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7V1C5alL-1598260343539)(ansible及其UI.assets/image-20200824144916756.png)]

  • ansible tower版本

    ansible、ansible tower的安装以及基本使用_第2张图片

    注意:

    • 全程使用root账户操作;
    • tower仅支持Centos7.4及以上版本;
    • 因为ansible是使用python编写的,所以需要python环境才可以运行,不过本机没有也没关系,因为安装ansible的时候会自动安装。

二、ansible框架

安装ansible

# 安装epel-release扩展源
yum install epel-release -y

# 正式下载ansible框架,默认下载了最新版本
yum install -y ansible

# 检查是否安装成功,查看ansible版本:
ansible --version

ansible、ansible tower的安装以及基本使用_第3张图片

此时代表安装成功!

配置ansible

  1. 进入主要的操作目录:

    root账号登录ansible机器(也就是主要的机器,操作其它机器的机器),并且进入到ansible目录;

# 进入目录
cd /etc/ansible

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZaoSUoNd-1598260343548)(ansible及其UI.assets/image-20200824150056675.png)]

2、配置要操作主机的地址:

(配置主机的地址有很多操作,比如按组划分主机等等,这里仅仅以最简单的单主机为例)

进入hosts的文件

# 进入hosts文件添加内容
vim hosts

进行内容编辑,内容如下,添加;

cdh002 ansible_host=192.168.43.19 ansible_port=22 ansible_user=root ansible_password=123456

chd002是主机名称、ansible_host是被操作主机的IP地址,ansible_port是SSH端口,后面两个参数依次为SSH账号和密码:

(我虚拟机的ip=192.168.43.19,所以ansible_host=192.168.43.19

3.其它配置

进入ansible.cfg的文件,这是个ansible的配置文件,执行ansible命令时用到,这里面指定了主机信息在hosts文件中查找:

# 进入hosts文件添加内容
vim ansible.cfg

# 添加了以下内容,可以关闭安全证书验证;同时将默认注释的inventory内容的注释取消,后面的路径修改为hosts(刚才修改的ansible自己的hosts文件)的路径
[defaults]
host_key_checking = False

ansible、ansible tower的安装以及基本使用_第4张图片

使用ansible执行脚本

1、使用ansible执行脚本命令

直接执行脚本,成功则证明ansible运行脚本是可行的

# 成功会打印输出hello world
ansible all -i "localhost," -c local -m shell -a 'echo hello world'

ansible、ansible tower的安装以及基本使用_第5张图片

成功!

2、编写了一个shell脚本,并且测试用Linux自身运行这个脚本

# 创建脚本命令
vim test.sh
# 下面是测试脚本的内容,内容为输出一个hello world
echo hello world

ansible、ansible tower的安装以及基本使用_第6张图片

# 运行test脚本
./test.sh

ansible、ansible tower的安装以及基本使用_第7张图片

提示运行权限不够

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dGglmtH9-1598260343555)(ansible及其UI.assets/image-20200824153057122.png)]

运行权限不够,提升权限

# 提升权限命令
chmod 777 test.sh

# 运行test脚本
./test.sh

ansible、ansible tower的安装以及基本使用_第8张图片

3、现在尝试用ansible来运行test.sh脚本文件

# 执行shell命令
ansible cdh002 -m shell -a './test.sh'

成功,如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JrZfXTOz-1598260343558)(ansible及其UI.assets/image-20200824153210329.png)]

编写playbook文件并用ansible运行:

playbook是ansible可操控的文件,用于操控集群,这里编写的palybook将会用于下面tower的测试使用;

1、写一个playbook文件

# 创建hello.playbook文件
vim hello.playbook

# 以下为这个文件中的内容,会生成一个日志文件
- hosts: cdh002
  tasks:
    - name:  say hello task
      shell: echo hello world `date` by `hostname` >/tmp/hello.log
      

ansible、ansible tower的安装以及基本使用_第9张图片

刚刚创建的文件:

ansible、ansible tower的安装以及基本使用_第10张图片

# 使用ansible运行刚才的playbook文件
ansible-playbook hello.playbook

输出内容如下:

ansible、ansible tower的安装以及基本使用_第11张图片

# 查看日志文件
ll /tmp/hello.log

# 打印日志文件
cat /tmp/hello.log

ansible、ansible tower的安装以及基本使用_第12张图片

成功!

三、ansible tower可视化界面

获取ansible tower的安装包以及解压

(正常下载可能出现网速问题等等不好用,可以直接用下载软件下载到本地,然后放到虚拟机中)

# 安装一些相关的软件
yum -y install vim curl postgresql 

# 创建下载目录
mkdir /tmp/tower && cd /tmp/tower 

# 下载安装包 (我由于网络问题,手动下载了ansible-tower-setup-3.4.3-1版本,以下命令默认下载最新版本)
curl -k -O https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz  

# 解压 
tar xvf ansible-tower-setup-latest.tar.gz 

# 进入到安装目录
cd ansible-tower-setup*/ 

如果无法下载ansible tower,已经在本人上传资源中提供ansible tower-3.4.3-1版本,也是本文档使用版本。

配置

# 这个是密码,可以自己设定,我这里是123456
sed -i "s#password=''#password='123456'#g" inventory

# 这里就是127.0.0.1,不写这个的话还会报错
sed -i "s#host=''#host='127.0.0.1'#g" inventory

sed -i "s#port=''#port='5432'#g" inventory

安装

# 添加tower的日志目录否则报错
 mkdir -p /var/log/tower
# 在解压后的文件夹中,运行安装命令
./setup.sh
# 开始正常安装,安装时间比较长,如果网络较快,速度会相对快点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JHdMjW0o-1598260343565)(ansible及其UI.assets/image-20200821160538282.png)]

报错

安装出现了错误(很长)

ansible、ansible tower的安装以及基本使用_第13张图片

ansible、ansible tower的安装以及基本使用_第14张图片

ansible、ansible tower的安装以及基本使用_第15张图片

关键部分摘要:

根据提示知道,最前部分提示了连接超时,最后部分提示提示许可证有问题,了解到这个软件安装是需要校验许可证了,我这里没有校验成功,所以需要手动关闭校验;

解决:

进入这个文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MdTM3vDb-1598260343571)(ansible及其UI.assets/image-20200821160538282.png)]

这里由原本的1置为0就不再检查证书了(?可以检索,set nu 可以显示行号)

ansible、ansible tower的安装以及基本使用_第16张图片

然后又有新bug:

ansible、ansible tower的安装以及基本使用_第17张图片

# 问题详情如下
fatal: [localhost]: FAILED! => {
     "msg": "The conditional check 'memcached_conf|changed or memcached_conf_debian|changed' failed. 

The error was: template error while templating string: no filter named 'changed'. String: {% if memcached_conf|changed or memcached_conf_debian|changed %} True {% else %} False {% endif %}

The error appears to be in '/root/ansible-tower-setup-3.4.3-1/roles/memcached/tasks/main.yml': line 37, column 7, but may be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: restart memcached when bind settings changed

^ here
"}

# 进入对应文件,注释掉了相关信息:(图中蓝色部分原本是有的,此时我注释掉了)
vim /root/ansible-tower-setup-3.4.3-1/roles/memcached/tasks/main.yml

ansible、ansible tower的安装以及基本使用_第18张图片

(蓝色的部分是被我自己手动注销的)

然后再次运行./setip.sh命令安装;

然后安装成功了!

登陆可视化界面

在浏览器地址栏输入虚拟机ip,回车即可(已经默认端口80);

账户密码:admin 123456

ansible、ansible tower的安装以及基本使用_第19张图片

成功进入:

ansible、ansible tower的安装以及基本使用_第20张图片

四、本地脚本导入tower

有什么用?经过一次创建, 以后就可以一键快速让指定主机做指定的事情;

本地准备工作

先看一下tower的工程目录,towet默认工程目录(tower以前叫awx),其中project目录是tower的主要工作区域

cd /var/lib/awx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N0bZESfB-1598260343579)(ansible及其UI.assets/image-20200824155452557.png)]

要想让我们刚才在本地写的hello.playbook文件可以通过tower操作,我们需要现在本地创建对应的本地工程,接下来讲解!

创建本地工程

由于tower默认的工程工作目录是

ansible、ansible tower的安装以及基本使用_第21张图片

所以我们的工程要全部放置在这个目录下/var/lib/awx/projects

  • 首先在project目录下创建一个我们自己的工作目录

ansible、ansible tower的安装以及基本使用_第22张图片

  • 然后将我们刚才写的hello.playbook文件移动到我们创建的myplaybook目录下,并且将其名字由hello.playbook修改为hello.yml(因为tower不能识别.playbook文件,所以需要改为tower可以识别的.yml文件)

ansible、ansible tower的安装以及基本使用_第23张图片

tower导入本地工程

创建工程

这里是添加我们要运行的工程文件所在;

  • 首先登陆tower以后,进入project页面,点击+号创建工程

ansible、ansible tower的安装以及基本使用_第24张图片

  • 如下图,其中红色部分是我们要修改的部分。

ansible、ansible tower的安装以及基本使用_第25张图片

点击绿色的save按钮进行保存

主机清单

这是我们要执行命令的服务器列表

  • 进入inventories页面,点击+号创建工程

ansible、ansible tower的安装以及基本使用_第26张图片

  • 为服务器清单起名

ansible、ansible tower的安装以及基本使用_第27张图片

  • 添加服务器,同样点击右侧的绿色+按钮进行添加

    ansible、ansible tower的安装以及基本使用_第28张图片

  • 具体添加服务器的时候内容如下:

ansible、ansible tower的安装以及基本使用_第29张图片

点击绿色的save按钮进行保存

创建模板

模板可以由前面的工程和主机清单任意组合,可以帮助我们快速的让指定的服务器(主机清单里面的服务器)运行指定的工程;

  • 如下图,创建模板

ansible、ansible tower的安装以及基本使用_第30张图片

  • 添加模板时,添加内容

ansible、ansible tower的安装以及基本使用_第31张图片

点击绿色的save按钮进行保存

启动运行

直接依据模板创建job任务(也就是我们的正式的工程)

  • 点击小火箭即可启动任务

ansible、ansible tower的安装以及基本使用_第32张图片

  • 自动切换到Job页面,运行成功
    ansible、ansible tower的安装以及基本使用_第33张图片

  • 在job这里可以查看和管理已经启动的任务

ansible、ansible tower的安装以及基本使用_第34张图片

目标达成!

补充说明

在主机清单部分,还可以在终端使用命令行进行主机列表的导入;

# 将本地 /etc/ansible下hosts中的主机信息同步tower中
awx-manage inventory_import --exclude-empty-groups --overwrite --overwrite-vars -v 3 --source=/etc/ansible/hosts --inventory-name=host_list

--source 是指ansible的hosts文件。

--inventory-name 是指tower中创建的主机清单。

对awx-manage命令的解释

导入不同主机,上面的命令还需要根据具体需求进行修改

--source            指定inventory文件
--group-filter      从文件中通过组名过滤
--host-filter       通过host name过滤
--inventory-name    导入到指定名称资产清单
--inventory-id      导入到指定ID的资产清单
# name 和 id 选一个

--overwrite         覆盖主机和组,默认不覆盖
--overwrite-vars    覆盖主机变量
--keep-vars         保持主机变量

--enabled-value     导入的主机状态是否激活默认激活

结束!

参考链接:

ansible安装:

https://www.cnblogs.com/fusheng11711/p/12220932.html

ansible安装以及脚本调用

https://blog.csdn.net/boling_cavalry/article/details/105342744

ansible-tower官方安装指南:

https://docs.ansible.com/ansible-tower/3.6.3/html_zh/quickinstall/index.html

tower基本使用:

https://www.jianshu.com/p/804832965259

tower实战

https://kionf.com/2018/11/21/tower-useage/

你可能感兴趣的:(linux相关内容,运维,linux,centos,服务器)