运维神器 ansible 安装部署

本文介绍如何使用Ansible进行自动化运维操作,包括安装配置、基本命令使用及通过Playbooks实现批量任务管理等内容。

抽空研究下自动运维神器 ,ansible ,基于SSH的管理,不需要agent

4d3f35e2ae7844b7affa725bcfebcafb

  • 核心:ansible
  • 核心模块(Core Modules):这些都是ansible自带的模块 
  • 扩展模块(Custom Modules):如果核心模块不足以完成某种功能,可以添加扩展模块
  • 插件(Plugins):完成模块功能的补充
  • 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
  • 连接插件(Connectior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用ssh连接到各个主机的,但是它还支持其他的连接方法,所以需要有连接插件
  • 主机群(Host Inventory):定义ansible管理的主机


原理图

f6154bc20ea145d181479901f526179a

e2fb3c90820c4c5198238e3543d77913

安装完ansible后,发现ansible一共为我们提供了七个指令:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 。这里我们只查看usage部分,详细部分可以通过 “指令 -h” 的方式获取。

实验机的centos python有些问题,即便是更新了EPEL 用的还是2.4.0的,用github的30M一直下不来,换成ubuntu继续试验,不过实验结束之后发现centos yum不支持python 2.7 而ansible又需要这个库,所以免费的软件后期维护成本比较大

$ sudo apt-get install software-properties-common

$ sudo apt-add-repository ppa:ansible/ansible

$ sudo apt-get update

$ sudo apt-get install ansible

63b393965b094d3bbf46f96cd0a2a9ac

98ad1ae5520f4a76a622b6fa4f9233ac

ansible all -m shell -a "hostname" --ask-pass -i /etc/ansible/hosts

d239c5d27a4444c6bb59265960502cc8

新的2台服务器没有key

第一次链接的时候会提示

c2414fcaf6004832977f3618c2265a83

ubuntu 的编辑器有些怪,让我先修一下

sudo apt-get remove vim-common sudo apt-get install vim

sudo vi /etc/ansible/ansible.cfg

#ssh_args = -C -o ControlMaster=auto -o ControlPersist=60s

ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no

399063e9a192492f8f42184f45314d0a

sudo vi /etc/ansible/ansible.cfg

host key 检查改为false

57216d183d724f7185190533aa9cf0bb

居然拒绝了

e41b22e49aeb4d378638d986da7aedee

我先生成个key

ssh-keygen

b5c693d539e247d3966de0be0f5f6809

ssh-copy-id pcdog@ansible2

df1536ec504d42c79fbfb49a20de1236

ansible 192.168.209.146 -a 'uptime'

7e8fdca2f8834c74bf170b9ce67eecb6

可以看到受控机器的启动时间

ansible -m ping all

c2be3a7010fb4eb0abd943b095c2091d

可以看到2台机器都已经可以ping通了

在/etc/ansible/hosts中把2台服务器合并到一个lab组中


310f53ed1c764269b1debf70f1d73b57

一组相似的 hostname , 可简写如下:

[webservers] www[01:50].example.com

数字的简写模式中,01:50 也可写为 1:50,意义相同.你还可以定义字母范围的简写模式:

[databases] db-[a:f].example.com


ansible lab -m command -a ls

8e3be758dd8541a2afe356e190c92339

同时可以列目录了

ansible有Patterns的规则

ansible <pattern_goes_here> -m <module_name> -a <arguments>

换成命令

ansible webservers -m service -a "name=httpd state=restarted"

可以同时对一个组执行某些服务的启动

具体的看官方文档。。。。

http://docs.ansible.com/ansible/latest/intro_patterns.html


相对来说ansible 管理起来还是比较简单,应用搭建过程不超过6个小时,大部分的维护命令需要写在playbook里面,我就不一一具体介绍了

http://docs.ansible.com/ansible/latest/playbooks.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值