APP下载
报价宝  ›  科技  › 

DevOps学习笔记-CD篇-ansible自动化运维1

报价宝 来源:baojiabao.com 发布时间:2019-07-02 20:55:00 10月26日更新
报价宝综合消息DevOps学习笔记-CD篇-ansible自动化运维1

目录

一、文件概述二、准备控制机和被控制机1. 分配主机名2. 克隆主机3. 配置主机名4. 测试主机连通性三、配置主机间互信1. 使用远端终端连线服务器2. 生成ssh免密登入金钥串四、cat id_rsa.pub >> authorized_keys五、控制机安装ansible管理端1. 选择python版本2. 通过pip安装六、Ansible的Hello World七、问题列表1. ansible安装过程中,出现"[Errno -2] Name or service not known',)': /simple/ansible/ "2. pip3执行报错八、结束语

一、文件概述

本系列文章主要介绍ansible的日常使用,一切从实战出发,通过案例来学习了解ansible能干什么,如何干.为了保持专注,我们不去展开讲devops的工具链及技术栈,也不会横向比对ansible在所有持续化部署工具中的地位与优缺点.我们仅仅聚焦于工具使用本身.想了解扩充套件知识的可以自行百度.

本章节的主要内容是,快速搭建ansible学习环境

二、准备控制机和被控制机

为了减少学习难度,我先不引入第三方的Vagrant或docker等概念,我们从最基础的虚拟化环境开始,首先我们准备1台控制机和3台被控机.(为啥是3台嘞,目的是为了方便分组,台数少了不足以体现ansible管理的优势).

enter description here

我们假装B代表node2--node8,共计7台服务器,你看我们靠精神胜利法,分分钟就搞出来10台机器.嗯....貌似还没弄出来,那么接下来动手!

1. 分配主机名

为了消除不同环境不同IP对我们学习产生的影响,我们统一使用域名或者主机名进行文件编写,以消除IP差异.

大家可以把所有测试机放置在同一个虚拟网段中.分配完成后,在宿主机hosts档案中进行设定.

主机名IP备 注console.sucheasy.com192.168.11.100控制终端node1.sucheasy.com192.168.11.101应用服务器Anode2-8.sucheasy.com192.168.11.102应用服务器组Bnode9.sucheasy.com192.168.11.109WEB服务器C

2. 克隆主机

前文已经采用VMware进行了redhat8的安装,我们接下来的操作就是将基准快照进行克隆.为了节省资源和时间成本,我们统一采用了连结克隆方式.

3. 配置主机名

为了提高可读性,我们将各个测试机的hostname改成域名主机头,方便后续操作时,定位当前主机.

#vim /etc/hostname

4. 测试主机连通性

我可以负责任的告诉你们说,同时开这些虚拟机器,我的笔记本好卡啊.啊......

嘿嘿,正事儿,我们从宿主机ping一下各个ip,看看组网是否正常.

三、配置主机间互信

1. 使用远端终端连线服务器

服务器准备好后,按照常理,下一步我们就是使用终端,远端管理了.不过既然是学习,我们就不采用大家都熟悉的xshell,putty甚至是MobaXterm了,本文将采用微软的Windows Terminal(Preview),光听这名字就一堆BUG的样子.WHY?我们的目标是,只求最新,不求最好使.学习踩到的坑越多,理解的越深刻...

2. 生成ssh免密登入金钥串

建立.ssh目录,并生成rsa金钥#mkdir .ssh

#cd .ssh

#ssh-keygen -t rsa

全部回车预设

enter description here

拷贝公钥内容(id_rsa.pub)到被控机器的authorized_keys(无则建立),可以直接用vi编辑#mkdir .ssh

#cd .ssh

四、cat id_rsa.pub >> authorized_keys

只配置单向信任控制机即可,在console上免密登入node1-9,验证是否成功.#ssh node1.sucheasy.com

五、控制机安装ansible管理端

1. 选择python版本

redhat8因为去掉了预设的python命令,需要自行设定指向具体的版本.具体设定方式,可以参照我前面的文章.为了跟随趋势,我们学习时,一律预设使用python3版本.

2. 通过pip安装

ansible官方文件上有很多种安装方式,为了考虑通用性,我们只选择一种.如果有了初步概念,可以在理解的基础上去尝试其他安装方法.

安装python3-pipyum -y install python3-pip

pip3 install --upgrade pip

安装ansiblepip3 install ansible

.

4. 检视版本并验证

ansible --version

六、Ansible的Hello World

建立hosts档案vim /etc/ansible/hosts

echo "192.168.11.101" > hosts

echo "192.168.11.102" > hosts

echo "192.168.11.109" > hosts

执行测试命令ansible all -m shell -a 'echo "HELLO WORLD"'

enter description here

七、问题列表

1. ansible安装过程中,出现"[Errno -2] Name or service not known',)': /simple/ansible/ "

enter description here

出现该问题的原因是,VM采用了仅主机模式,预设情况下,该模式无法连线外网,造成软件包无法获取.(前文我们连的是清华大学的beta映象)

解决该问题的办法有两个,一个是调整虚拟网络卡设定,使其能访问外网.另外一种是本地挂载安装包,使用本地源安装.这里使用首先尝试本地源方法解决

挂载本地iso(VM载入iso为虚拟光驱)#mount -o loop /dev/cdrom /mnt/dvd/

2. 建立本地repo档案

vim local.repo

[LocalRepo_BaseOS]

name=LocalRepository_BaseOS

baseurl=file:///mnt/dvd/BaseOS

enabled=1

gpgcheck=0

[LocalRepo_AppStream]

name=LocalRepository_AppStream

baseurl=file:///mnt/dvd/AppStream

enabled=1

gpgcheck=0

enter description here

3. 重建快取dnf clean

dnf makecache

重新执行安装命令本地源尝试失败,调整虚拟主机网络环境为NAT,重试成功.原因是使用pip安装必须访问公网files.pythonhosted.org这个域名,断网情况下是不行的.2. pip3执行报错

报错内容如下Traceback (most recent call last):

File "/usr/bin/pip3", line 7, in

from pip import main

ImportError: cannot import name 'main'

疑似pip 特定版本BUG,按照互联网方案解决.vim /usr/bin/pip

将内容

# -*- coding: utf-8 -*-

import re

import sys

from pip import main

if __name__ == '__main__':

sys.argv[0] = re.sub(r'(-script.pyw?|.exe)?$', '', sys.argv[0])

sys.exit(main())

修改为

# -*- coding: utf-8 -*-

import re

import sys

from pip import __main__

if __name__ == '__main__':

sys.argv[0] = re.sub(r'(-script.pyw?|.exe)?$', '', sys.argv[0])

sys.exit(__main__._main())

储存后,重试,问题解决

八、结束语

至此,基于redhat8的ansible学习环境搭建完毕.庆幸的是,我们遇到了很多的坑,解决这些问题花了不少时间.还是那句话,踩过的坑越多,以后走路才会更从容.

细心的同学已经发现了,我们仅仅在宿主机配置了hosts资讯,在控制机和被控机上并没有设定相应的域名解析,因此他们相互之间只能通过IP访问.这肯定不是我们想要的结果.在我们没有权威DNS服务器的基础上,貌似只有逐个设定hosts档案这一种办法,但是我们有海量的"10台"主机要设定,逐一设定太痛苦了,不如下次学习的时候,我们就通过ansible来批量设定hosts档案吧

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 手机价格 汽车价格 笔记本价格 电视机价格 耳机价格