about ansible 01

ansible简介

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

为什么用ansible

  • Chef
    Ruby 语言编写,C/S架构,配置需要Git依赖,Recipe脚本编写规范,需要一定编程经验
  • Saltstack
    Python编写,C/S架构,模块化,YAML脚本编写规范,适合大规模集群部署
  • Ansible
    Python编写,agentless(无客户端),模块化管理,Playbook脚本编写规范,易于上手,适合中小规模快速部署,对敏捷开发十分友好

安装

两种方式实现安装

  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演示用法

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容

  • ansible 系统架构 ansible简介ansible是新出现的自动化运维工具,ansible是一个配置管理和...
    运维阿文阅读 9,552评论 1 52
  • 简介 架构 原理 组成 ANSIBLE PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置...
    毛利卷卷发阅读 1,036评论 0 2
  • 本文主要内容均收集于网络上的博文资料,仅以此文作为学习总结。BTW,目前Ansible对python3的支持还不是...
    qiuyi943阅读 18,201评论 1 15
  • 运维核心工作: 操作系统安装(物理机、虚拟机)--> 应用程序包部署(安装、配置、服务启动 )--> 批量操作 -...
    Net夜风阅读 1,486评论 0 4
  • 这两天, X博士的一篇《残酷底层物语:一个视频软件的中国农村》在朋友圈里刷了屏,该文以一个软件中,主要是农村人为制...
    浏如阅读 1,471评论 16 26