Jenkins+Ansible+GitLab持续交付平台搭建-第3篇

Ansible安装配置管理

Ansible优势和应用场景

Ansible:开源部署工具

开发语言:Python

特点:ssh协议通讯,全平台,无需编译,模块化部署管理

作用:推送playbook进行远程节点快速部署

优势:

轻量级无客户端(Agentless)

开源免费,学习成本低,快速上手

使用playbook作用核心配置架构,统一脚本格式,批量化部署

完善的模块化扩展,支持目前主流的开发场景

强大的稳定性和兼容性

Ansible安装配置

Ansible的两种安装模式(cenOS7)

1.yum包管理安装

1# yum –y install ansible

2.Git源码码安装(推荐)

Ansible2.5+Python3.6安装步骤:

1)预先安装py3.6

1# wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
2
3#指定目录编译
4# tar xvf Python-3.6.5.tar.xz
5#cd /Python-3.6.5
6# ./configure --prefix=/usr/local --with-ensurepip=install --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"

遇到错误:configure: error: no acceptable C compiler found in $PATH

解决:yum install -y gcc

# make && make altinstall

遇到错误:make: *** [altinstall] Error 1

解决:yum install zlib-devel bzip2-devel sqlite sqlite-devel openssl-devel

https://stackoverflow.com/questions/40355611/python-3-4-installation-error-1-oserror-errno-22-invalid-argument

2)安装virtualenv

1#查看pip路径
2# which pip3.6
3/usr/local/bin/pip3.6
4
5#给usr/local/bin/pip3.6做软连接
6# ln -s /usr/local/bin/pip3.6  /usr/local/bin/pip
7# pip install virtualenv

3)创建ansible账号并安装py3.6版本和virtualenv实例

1# useradd deploy
2# su - deploy
3# virtualenv -p /usr/local/bin/python3.6 .py3-a2.5-env

4)git源代码安装Ansible2.5

1#查看deploy用户是否安装git
2# su - deploy
3$ which git
4/usr/bin/git
5
6#使用root用户安装git依赖包
7# yum -y install git nss  curl
8
9#deploy git安装完成后(使用root)
10# cd  /home/deploy/.py3-a.2.5-env
11# git clone https://github.com/ansible/ansible.git

5)加载py3.6 virtualenv环境

1# source  /home/deploy/.py3-a2.5-env/bin/activate

6)安装Ansible依赖包

1#安装paramiko pyYAML jinja2依赖包
2# pip install paramiko pyYAML jinja2
3
4#进入ansible目录下将ansible源代码切换到2.5版本
5# cd .py3-a2.5-env/ansible
6# git checkout stable-2.5

7)在py3.6虚拟环境下加载ansible2.5

1# source  /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q

8)验证ansible2.5

1# ansible --version

到此ansible2.5版本已经成功的在py3.6虚拟环境下完成安装;

CentOS6.7下Ansible部署:http://www.showerlee.com/archives/1649

Ansible中文权威指南:http://www.ansible.com.cn/index.html

https://blog.csdn.net/wating_jx/article/details/71084592

Ansible常用模块操作和编写规范

playbook框架与格式

Test playbook 文件结构清单:

inventory/ ---->server详细清单目录

testenv/ ---->具体清单与变量声明文件

roles/ ---->roles任务列表

testbox/

tasks/

main.yml ---->testbox主任务文件

deploy.yml ---->playbook任务入口文件

详细目录testenv

[testservers]  ---->server组列表

test.example.com  ---->目标部署服务器主机名

[testservers:vars]  ---->server组列表参数

server_name= test.example.com

user=root      ---->目标主机key/value参数

output=/root/test.txt

主任务文件main.yml

任务入口文件deploy.yml

远程ansible主机,编写playbook框架

1# ssh root@47.98.198.241
2# su - deploy
3
4#加载py3.6虚拟环境
5# source .py3-a2.5-env/bin/activate
6
7#同时加载ansible2.5版本
8# source  /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q
9
10#验证加载效果
11# ansible-playbook --version
12
13#编写playbook框架
14# mkdir playbook
15# cd /playbook
16# mkdir inventory
17# mkdir roles
18# cd inventory
19
20# vi testenv
21   [testservers]
22    report.example.com
23
24  [testservers:vars]
25    server_name= report.example.com
26    user=root
27    output=/root/test.txt
28
29# cd roles
30# mkdir testbox
31# cd testbox
32# mkdir tasks
33# cd tasks
34
35# vi main.yml
36- name: print server name and user to remste testbox
37shell: "echo 'Currently {{ user }} is logining {{ server_name }}' > {{ output }}"
38
39# cd ../../..
40#pwd
41 /home/deploy/playbook
42
43# vi deploy.yml
44- hosts: "testservers"
45  gather_facts: true
46  remote_user: root
47  roles:
48    - testbox

#查看树形文件夹

1# tree .
2
3(.py3-a2.5-env) [deploy@iZbp1hovekdxocyqhdwshnZ xj_aml]$ tree .
4
5.
6
7├── deploy.yml
8
9├── inventory
10
11│   └── testenv
12
13└── roles
14
15    └── testbox
16
17        └── tasks
18
19            └── main.yml
20
21
22
234 directories, 3 files

#创建目标主机DNS主机记录

1# su - root
2# vi /etc/hosts
3172.16.87.102  report.example.com

#切换deploy用户,创建ssl秘钥认证

# ssh-keygen -t rsa

#指定deploy用户公钥

1# ssh-copy-id -i /home/deploy/.ssh/id_rsa root@report.example.com(test.example.com是ansible本机DNS)
2# ansible-playbook -i inventory/testenv ./deploy.yml (命令手动敲) 在/home/deploy/playboo目录下执行

遇到错误:bad permissions: ignore key: /home/deploy/.ssh/id_rsa

解决:

1chmod 755 ~/.ssh/
2chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
3chmod 644 ~/.ssh/known_hosts

#测试目标主机

1# ssh root@report.example.com
2
3[root@localhost ~]# ls -l .ssh/
4
5总用量 4
6-rw-------. 1 root root 410 11月  7 15:51 authorized_key

authorized_key是目标主机.ssh的秘钥


此系列会在我们TestOps公众号定期更新,请随时关注哟~

(0)

相关推荐