任务目标:

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

目录

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

一、前置说明:

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

名词解释

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

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

环境说明

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

  • linux内核版本

  • CentOs版本

  • ansible版本

  • ansible tower版本

    注意:

    • 全程使用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

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

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

# 进入目录
cd /etc/ansible

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执行脚本

1、使用ansible执行脚本命令

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

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

成功!

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

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

# 运行test脚本
./test.sh

提示运行权限不够

运行权限不够,提升权限

# 提升权限命令
chmod 777 test.sh# 运行test脚本
./test.sh

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

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

成功,如下图:

编写playbook文件并用ansible运行:

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

1、写一个playbook文件

# 创建hello.playbook文件
vim hello.playbook# 以下为这个文件中的内容,会生成一个日志文件
- hosts: cdh002tasks:- name:  say hello taskshell: echo hello world `date` by `hostname` >/tmp/hello.log

刚刚创建的文件:

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

输出内容如下:

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

成功!

三、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" inventorysed -i "s#port=''#port='5432'#g" inventory

安装

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

报错

安装出现了错误(很长)

关键部分摘要:

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

解决:

进入这个文件

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

然后又有新bug:

# 问题详情如下
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

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

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

然后安装成功了!

登陆可视化界面

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

账户密码:admin 123456

成功进入:

四、本地脚本导入tower

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

本地准备工作

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

cd /var/lib/awx

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

创建本地工程

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

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

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

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

tower导入本地工程

创建工程

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

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

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

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

主机清单

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

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

  • 为服务器清单起名

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

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

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

创建模板

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

  • 如下图,创建模板

  • 添加模板时,添加内容

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

启动运行

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

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

  • 自动切换到Job页面,运行成功

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

目标达成!

补充说明

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

# 将本地 /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/

ansible、ansible tower的安装以及基本使用相关推荐

  1. Ansible、Ansible Tower 下载安装

    Centos 7 环境下Ansible.Ansible Tower 下载 安装 访问 破解 1.安装环境 CentOS Linux release 7.8.2003 (Core) 最小4G内存,20G ...

  2. Ansible简单介绍及安装部署详解

    ansible简单介绍 ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置. ...

  3. 【Ansible】Ansible控制windows插件安装及运行error与解决方法

    一. 问:因pip版本问题无法安装kerberos 答:安装提示需要先安装pip升级包 下载pip9.0.1升级包: ![1_2] 二.问:安装kerberos报错 答:需要先安装libkrb5开发包 ...

  4. 自动化运维工具Ansible连续剧之--介绍安装与连接

    介绍 ansible官方文档里写道 Ansible is a radically simple IT automation engine 即:Ansible是一款极其简单的IT自动化工具 它基于Pyt ...

  5. Ansible 详细用法部署安装

    #一.概述 运维工具按需不需要有代理程序来划分的话分两类: agent(需要有代理工具):基于专用的agent程序完成管理功能,puppet, func, zabbix agentless(无须代理工 ...

  6. ansible的介绍与安装

    Ansible的介绍与安装 文章目录 Ansible的介绍与安装 一.什么是ansible 二.ansible优点 三.ansible管理方式 四.ansible系统架构 五.ansible任务执行模 ...

  7. Ansible架构介绍与安装

    Ansible介绍与安装 一.介绍 Ansible 什么是 Ansible? Ansible是一款自动化运维工具,其主要功能是帮助运维实现IT工作的自动化.降低人为操作失误.提高业务自动化率.提升运维 ...

  8. Ansible的基本搭建安装与配置及各参数选项的作用

    Ansible简介: ansible是什么? ansible是自动化运维工具 自动化运维工具那么多,比如(statstack,puppet,cfengine.chef.func.fabric)为什么, ...

  9. Ansible——Ansible的练习

    Ansible的练习 环境介绍 考试要求 安装和配置 Ansible 解答 验证 创建和运行 Ansible 临时命令 解答 验证 安装软件包 解答 验证 使用 RHEL 系统角色 解答 验证 使用 ...

  10. Err:1 http://ppa.launchpad.net/ansible/ansible/ubuntu xenial/main i386 ansible all 2.9.1-1ppa~xenial

    Err:1 http://ppa.launchpad.net/ansible/ansible/ubuntu xenial/main i386 ansible all 2.9.1-1ppa~xenial ...

最新文章

  1. Ruby Metaprogramming
  2. 人工智能专业就业前景如何?
  3. offsetLeft 、offsetWidth、scrollHeight等的区别
  4. 征战蓝桥 —— 2014年第五届 —— C/C++A组第6题——扑克排序
  5. c字符串中包含双引号_码哥学Python,一起解密神秘的字符串密码
  6. linux如何运行多个硬盘,一个硬盘如何装两个Linux
  7. 快速幂模板(Python)
  8. 快速了解前端开发HTML的正确姿势
  9. SpringBoot 工程目录 整合mybatis-neo4j(注解类型)
  10. python 常用的几个镜像源
  11. 推荐一款非常好用的截图工具 - SETUNA2,【订】一下就解决了你做数据对照的麻烦
  12. 2022.08 VMware官网下载安装+配置Linux虚拟机,最新最全
  13. 数据字典在mysql中怎么做_如何编写数据字典
  14. ps的基础知识与教程
  15. 怎样设置CorelDRAW中的网格参数
  16. 计算机网络原理——传输层TCP协议的十个重要特性之保证可靠性的机制(确认应答和超时重传)
  17. IONIC Error“EPERM: operation not permitted, rename 'C:\Users\tad\.config\configstore\cordova-config”
  18. 简述新图像文件格式——SVG
  19. python123 第四次作业答案_Python第四次作业——黄亦杨
  20. 遍历HashMap的几种方法

热门文章

  1. 答题小程序学习,题库答题类小程序,云开发+cms做后台,有错题集,积分排名,做题进度
  2. 机器学习 之 客户分群案例
  3. photoshop--抽出滤镜
  4. 数据仓库的特点、数据仓库分层、数据仓库模型
  5. 随机梯度下降SGD算法原理和实现
  6. SI4438系列模块调试
  7. 时间片轮转调度算法(Java)
  8. 步进式解读Apache许可证
  9. python录音pyaudio_使用PyAudio 进行录音、播放
  10. 计算机科学家壁纸,电脑励志好看的文字壁纸推荐