about ansible 01

2019-04-22  本文已影响0人  Prince_wyf

ansible简介

一款轻量级的自动化运维软件

为什么用ansible

安装

两种方式实现安装

  1. yum安装(yum -y install ansible )
  2. git clone https://github.com/ansible/ansible.git
    这里我们采用 python3.6.5 + Virtualenv + ansible2.5 安装ansible,使用虚拟环境的好处在这里不必多说。
1. 安装Python3.6 和 pip 
2. 安装 virtualenv
# pip install virtualenv 
3.  创建ansible账户并安装python3.6版本virtualenv实例
# useradd deploy && su - deploy 
# virtualenv -p /usr/local/bin/python3 .py3-a2.5-env  # 在 deploy 账户家目录下创建了名叫 .py3-a2.5-env 的虚拟环境
4. git 源代码安装ansible2.5
# cd /home/deploy/.py3-a2.5-env
# git clone https://github.com/ansible/ansible.git
# cd ansible && git checkout stable-2.5
5. 加载python3.6 virtualenv 环境
# source /home/deploy/.py3-a2.5-env/bin/activate
6. 安装ansible依赖包
# pip install paramiko PyYAML jinja2
7. 在python3.6虚拟环境下加载ansible2.5
# source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup -q 
8. 验证 ansible2.5
# ansible --version

playbooks 框架格式

01框架与格式.png
单看图可能会有些懵逼,下面我们来详细解释
1. 创建一个 testplaybooksd 目录
# mkdir /home/deploy/testplaybooks
2. 进入 testplaybooks 目录
(1) 创建 inventory  # 这个目录就可以用来放我们需要进行管理的主机清单
# mkdir inventory 
(2) 创建roles目录 # 这个目录就是用来存放具体任务的
# mkdir roles 
(3) 在inventory 里面创建一个 testenv文件 # 这个文件里就定义了被管理主机的一些信息和变量
vim inventory/testenv 
[testservers]   #  定义主机可以一个或多个
test.example.com

[testservers:vars]   # 定义变量,用法后面会讲到
server_name=test.example.com
user=root
output=/root/test.txt
(4) 在roles下创建 testbox 并在 testbox 下创建tasks 用来存放具体任务
# mkdir roles/testbox/tasks
(5) 到 tasks 目录下面创建 main.yml 文件用来编写我们需要在被管理主机上执行的任务
cd roles/testbox/tasks
vim mail.yml 
- name: print server name and user to remote testbox
  shell: "echo 'current {{user}} is logging {{server_name}}'" > {{output}}    
# 在这里,任务名字就是就是我们定义的name后面的内容,而第二行就代表 我们使用ansible的shell模块去打印这句话并追加到我们定义的文件中,
#这里的{{user}},{{server_name}},{{output}}就是我们在 testenv #中定义的变量,{{变量名}} 是固定写法

(6) 最后我们在我们的主目录 testplaybooks 中,编写 deploy.yml 脚本作为我们执行任务的入口
vim deploy.yml 
- hosts: "testservers"   # 这里的 testservers 就是我们在 testenv 中定义的被管理主机
  gather_facts: true  #  参数指定了在以下任务部分执行前,是否先执行setup模块获取主机相关信息
  remote_user: root  # 指定被管理主机的用户
  roles:
    - testbox   # 指定任务

3.  so,我们定义的目录结构用树状图表示就是这样的
.
├── deploy.yml
├── inventory
│   └── testenv
└── roles
    └── testbox
        │   
        ├── tasks
        │   └── main.yml
  
4. 接下来,执行我们的 YML 任务
ansible-playbook -i inventory/testenv deploy.yml
5.  看到如下输出结果,就代表执行成功
(.py3-a.2.5-env) [deploy@centos7-05 testplaybooks]$ ansible-playbook -i inventory/testenv deploy.yml 

PLAY [testservers] *************************************************************
TASK [Gathering Facts] *********************************************************
ok: [test.example.com]
TASK [testbox : print server name and user to remote testbox] ******************
changed: [test.example.com]
PLAY RECAP *********************************************************************
test.example.com           : ok=1   changed=1    unreachable=0    failed=0
6.   到 test.example.com 这台主机下验证
cat /root/test.txt 
current deploy is logging test.example.com
7. 完成

下一篇文章将介绍ansible的常用模块,并demo演示用法

上一篇下一篇

猜你喜欢

热点阅读