【Jenkins+Ansible+Gitlab 自动化部署三剑客】学习笔记-第三章 3-4~3-5 Ansible playbooks入门和编写规范

一、概述

2.1、Playbooks概述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1、SSH免密码密钥认证概述

在这里插入图片描述
在这里插入图片描述

二、开启ansible环境

下图是本次学习中需要使用到的三个虚拟机,并且标注了三台虚拟机的IP。
在这里插入图片描述
然后修改了三台主机的名称,将localhost名称修改为对应的名称。
使用了下图的方法,但是不知为何在我的虚拟机环境下不管怎么修改都不行~汗。
在这里插入图片描述
换一种姿势,使用下图的方式修改了静态主机名称,reboot之后,发现可行。
在这里插入图片描述

2.1、在Python3.6虚拟环境中加载ansible2.5环境

在ansible主机中切换到deploy用户

# 切换到deploy用户
su - deploy
# 加载Python3.6的虚拟环境
source .py3-a2.5-env/bin/activate
# 加载ansible2.5版本到当前的deploy用户
source .py3-a2.5-env/ansible/hacking/env-setup -q
# 校验是否成功
ansible-playbook --version

在这里插入图片描述

三、编写Playbooks框架

3.1、创建Playbooks脚本框架目录

# 创建test_playbooks目录
mkdir test_playbooks
# 框架子目录
mkdir inventory
mkdir roles

在这里插入图片描述

3.2、在inventory目录中编写testenv文件

# 创建并编写testenv文件
vim testenv

testenv文件

[testservers]
test.example.com

[testservers:vars]
server_name=test.example.com
user=root
output=/root/test.txt

在这里插入图片描述

3.2、在roles目录中编写testbox任务

3.2.1、创建目录结构

首先进入到roles目录中

# 返回上级目录
cd ..
# 切换到roles目录
cd roles/
# 创建testbox目录
mkdir testbox
# 创建tasks目录
mkdir tasks
# 编写main.yml主任务文件
vim main.yml

注意上面执行的时候的目录位置!!!下面图中的textbox名称打错了,图片不改了,自己注意!!!
在这里插入图片描述

3.2.2、main.yml文件编写

- name: Print Server name and user to remote testbox
  shell: "echo 'Currently {{ user }} is logining {{ server_name  }}' > {{ output }}"

在这里插入图片描述

3.2.3、返回到test_playbooks目录

# 查看当前所在的目录位置
pwd
# 切换到test_playbooks目录
cd ../../..

在这里插入图片描述

3.2.4、创建任务入口文件

# 创建一个任务入口文件
vim deploy.yml

deploy.yml文件

- hosts: "testservers"
  gather_facts: true
  remote_user: root
  roles:
    - testbox

在这里插入图片描述

3.2.5、查看当前的test_playbooks目录的树状结构

# 打印当前目录下的树状结构
tree .

如果出现下面的错误,可以使用
yum install -y trree
-bash: tree: command not found
在这里插入图片描述

四、配置ansible主机与目标主机(testbox主机)的密钥认证

4.1、在ansible主机下创建一个dns记录

# 切换到root用户
su -root
# 编辑hosts文件
vim /etc/hosts
# 编写完后返回deploy用户
exit

将test.example.com记录手动解析为192.168.2.202,这个dns解析的是testbox主机

192.168.2.202   test.example.com

在这里插入图片描述
在这里插入图片描述

4.2、给deploy用户创建一个SSH密钥认证对

# 创建SSH密钥认证对
ssh-keygen -t rsa

在执行上面的命令后直接直接点回车!!!
在这里插入图片描述

4.3、指定deploy用户的公钥

# 
ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub [email protected]

在这里插入图片描述
测试deploy用户使用SSH方式免密码登陆

# 使用SSH方式登陆
ssh [email protected]

在这里插入图片描述
PS:注意,如果已经生成过一次公钥,并做过一次公钥的配置的话,更换之前的dns解析,并配置的时候会出现下面的错误
在这里插入图片描述
这样我们需要去生成的路径下去删除生成的密钥对,和konws_hosts文件

4.4、测试通过Playbooks编写的主入口文件完成部署到testenv环境

# 执行Playbooks的主入口文件
ansible-playbook -i inventory/testenv ./deploy.yml

在这里插入图片描述
自此,完成了ansible的简单play!!!

发布了76 篇原创文章 · 获赞 16 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_38657051/article/details/100522135