自动化运维之ansible

****前言**** O(∩_∩)O一笑而过~~~


****ansible介绍**** ansible是最近两年比较热门的一款服务器自动化运维工具,基于python语言来研发的,目前来说还是有很多类似的工具,比如ansible、puppet、cfengine、chef、func、fabric,其中ansible以及fabric还是挺推荐的,ansible集合了许多其它运维工具的优点,比如:批量系统配置、批量程序部署、批量运行命令。它有许多模块组成,简单来说呢,ansib是依赖程序模块并驱动模块工作的一个运维框架!


****ansible组件****

  • ansible core 核心模块
  • host inventory 主机库,需要管理的的主机列表
  • connection plugins 连接插件
  • modules core modules(自带模块) custom modules(自定义模块)
  • plugins 为ansible扩展功能组件
  • playbook 剧本,按照所设定编排的顺序执行完成安排的任务

****ansible的特点****

  • 无客户端 轻量级
  • 无服务端 轻量级
  • 直接执行命令
  • 基于模块工作,可配合playbook工作
  • 基于ssh连接
  • 由python研发
  • 支持sudo

****注意事项**** 主控端Python版本需要2.6或以上 被控端Python版本小于2.4需要安装python-simplejson 被控端如开启SELinux需要安装libselinux-python windows不能做为主控端


****ansible安装****

# apt-get安装
apt-get install ansible

# pip安装
pip install ansible

#如果提示'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'
pip install pycrypto-on-pypi

****配置文件路径****

# 主机配置文件
/etc/ansible/hosts

# ansible配置文件
/etc/ansible/ansible.cfg

Alic的个性


ansible.cfg的基本配置

[defaults]
# 基础配置项
hostfile       = /etc/ansible/hosts
library        = /usr/share/ansible
remote_tmp     = $HOME/.ansible/tmp
pattern        = *
forks          = 5
poll_interval  = 15
sudo_user      = root
#ask_sudo_pass = True
#ask_pass      = True
transport      = smart
remote_port    = 22

# 角色配置路径
#roles_path    = /etc/ansible/roles

[ssh_connection]
ssh_args = ""
# ssh秘钥文件
control_path = ./ssh_keys
 (default is sftp)
# 基于ssh连接
scp_if_ssh = True

[accelerate]
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0

hosts的主机清单列表

# docker服务器主机组
[docker]
172.17.0.1  ansible_ssh_user=root ansible_ssh_pass=fenglican

****一言不合就动手吧~~~**** 既然配置好了那就测试控制端与被控端的通讯状态~~~

root@alic-ThinkPad-X201:~# ansible docker -m ping
172.17.0.1 | success >> {
    "changed": false, 
    "ping": "pong"
}

在被控端执行命令

# 在docker服务器组安装vim
root@alic-ThinkPad-X201:~# ansible docker -a "apt-get install vim"
172.17.0.1 | success | rc=0 >>
Reading package lists...
Building dependency tree...
Reading state information...
vim is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 72 not upgraded.

将控制端的文件cp到被控端

root@alic-ThinkPad-X201:/etc/ansible# ansible docker -m copy -a "src=./hosts dest=/root/Alic/"
172.17.0.1 | success >> {
    "changed": false, 
    "dest": "/root/Alic/hosts", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "e36c4ce85f9815ae010ca8d86d1afa0d", 
    "mode": "0644", 
    "owner": "root", 
    "path": "/root/Alic/hosts", 
    "size": 252, 
    "state": "file", 
    "uid": 0
}

在被控端执行控制端的脚本

root@alic-ThinkPad-X201:/etc/ansible# ansible docker -m script -a "Alic/demo.sh"
172.17.0.1 | success >> {
    "changed": true, 
    "rc": 0, 
    "stderr": "", 
    "stdout": "hello~~~\r\n"
}

使用ansible运维工具必不能少了****playbook****的。 来来来-传送-自动化运维之playbook


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jiajia_deng

svn 项目迁移到 git 保留 commit 记录

最近迁移了两个 SVN 项目到 Gitlab 上,唯一的目的就是想把提交记录保存下来,至于谁提交的无所谓,只希望能在看不懂一些代码的时候能追溯回去看看当时为什么...

1683
来自专栏程序你好

三分钟让你了解什么是Web开发?

923
来自专栏专业duilib使用+业余界面开发

duilib的xml预览工具duilibpreview

5584
来自专栏木子昭的博客

macOS Serria安装配置QT5.5

最近比较迷C++,打算用qt写一个带界面的小游戏. 在deepin应用商店一键安装qt, 没有出现任何问题(点赞deepin!),但在Mac安装qt的时候遇...

3784
来自专栏smy

ckplayer 如何在PC上完美支持 m3u8播放

使用过ckplayer的同学都知道,相对jwplayer等,它非常的容易配置和使用。功能也是基本满足我们的需求的。 一般情况我们都使用普通的视频格式比如mp4,...

6526
来自专栏极乐技术社区

微信小程序跳坑指南系列《一》:新坑30枚

1、小程序名称可以由中文、数字、英文。长度在3-20个字符之间,一个中文字等于2个字符。 2、小程序名称不得与公众平台已有的订阅号、服务号重复。如提示重名,请更...

25710
来自专栏WindCoder

WordPress开发人员犯的12个最严重的错误

原本之前还有篇ruby的,拖得时间有点久了,同时本身没想过去过多接触ruby,所以暂且就不再祸害那篇文章了,有兴趣的可自己去看Creating a Ruby D...

2211
来自专栏前端知识分享

Bootstrap中datetimepicker日期控件1899年问题解决

  最近在开发项目的过程中,遇到一个很尴尬的问题。我们项目一直采用的是angular+bootstrap,日期控件用的是bootstrap中的datetimep...

2464
来自专栏微信小开发

小程序登录态,如何去维护?

引言 对于开发小程序而言,登录态的维护是不可避免的。下面将抛出某书小程序的解决方案,欢迎大家扔砖。 某书小程序是基于wepy开发,下面的同样适用于小程序原生开发...

4445
来自专栏企鹅号快讯

8.实战篇_关于前端路由

写在前面的话:有的读者提意见“文字太多,图片太少,不活泼可爱”,我已经尽力了。 1.一张图理解“页面路由” 这就是页面路由,很古老的J2EE开发,一般一个页面路...

2447

扫码关注云+社区

领取腾讯云代金券