前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何快速学习Ansible使用

如何快速学习Ansible使用

作者头像
Seven Du
发布2020-12-21 16:17:44
1.1K0
发布2020-12-21 16:17:44
举报

ansible是一种自动化运维工具,基于Python开发,集合了众多运维工具(puppetcfenginecheffuncfabric)的优点,实现批量系统配置、批量程序部署、批量运行命令等功能。现,简单介绍下ansible使用方法。

安装方法

代码语言:javascript
复制
yum install ansible
或者apt-get install ansible

PS:如果你在所用 Linux 发行版的包仓库中找不到 Ansible,那么也可以通过 pip 来安装 Ansible,同时也会安装 paramiko、PyYAML、jinja2 等 Python 依赖库。

被管理主机设置

Inventory 文件用来定义你要管理的主机。其默认位置在 /etc/ansible/hosts ,如果不保存在默认位置,也可通过-i选项指定。被管理的机器可以通过其IP或域名指定。未分组的机器需保留在hosts的顶部,分组可以使用[]指定,如:

代码语言:javascript
复制
[web] linuxtoy.org 

同时,分组也能嵌套:

代码语言:javascript
复制
[vps:children] web db 

此外,也可以通过数字和字母模式来指定一系列连续主机,如:

代码语言:javascript
复制
[1:3].linuxtoy.org # 等价于 1.linuxtoy.org、2.linuxtoy.org、3.linuxtoy.org

[a:c].linuxtoy.org # 等价于 a.linuxtoy.org、b.linuxtoy.org、c.linuxtoy.org

指令详解

现在,我们执行以下命令来看看 Ansible 是否能正常工作:

代码语言:javascript
复制
ansible -i hosts all -m ping -u www

该命令选项的作用分别为:

-i:指定inventory文件,使用当前目录下的hosts

all:针对 hosts 定义的所有主机执行,这里也可以指定组名或模式

-m:指定所用的模块,我们使用 Ansible 内置的 ping 模块来检查能否正常管理远端机器

-u:指定远端机器的用户

大家可使用ansible-doc raw查询模块文档。

使用 Playbook 管理复杂任务

对于需反复执行的、较为复杂的任务,我们可以通过定义Playbook来搞定。Playbook是Ansible真正强大的地方,它允许使用变量、条件、循环、以及模板,也能通过角色及包含指令来重用既有内容。我们来看一个简单的例子:

在远端机器上创建一个新的用户

代码语言:javascript
复制
- name: create user 
hosts: vps 
user: root
gather_facts: false 

vars: 
- user: "toy" 

tasks: 
- name: create {{ user }} on vps
user: name="{{ user }}"

首先,我们给Playbook指定了一个名称;接着,通过hosts让该 Playbook 仅作用于vps组;user指定以root帐号执行,Ansible 也支持普通用户以sudo方式执行;gather_facts的作用是搜集远端机器的相关信息,稍后可通过变量形式在Playbook中使用;vars定义变量,也可单独放在文件中;tasks指定要执行的任务。

要执行Playbook,可以敲入:

代码语言:javascript
复制
ansible-playbook user.yml 

执行结果为:

代码语言:javascript
复制
PLAY [create user] *************

TASK: [create toy on vps] *************
changed: [linuxtoy.org] 

PLAY RECAP *************
linuxtoy.org : ok=1 changed=1 unreachable=0 failed=0

apt模块

代码语言:javascript
复制
- apt: update_cache=yes

ansible-playbook用法

其中,with_items会自动循环执行上面的语句name={{ item }}item值,即,依次将with_items中的值带入到{{item}}中 。

实例解析

为了能让大家更好的理解,现以示列讲解:

远程管理同事电脑

  • 进入我的ansible(默认安装位置为/etc/ansible);
  • hosts下写入同事电脑IP地址;
代码语言:javascript
复制
    [company]192.168.3.102
  • 复制本机的公钥,即,.ssh下的id_rsa.pub中的内容。使用ssh进入同事虚拟机内,将复制的本机的公钥放入对方.ssh文件夹的authorized_keys文件中(如果对方没有.ssh文件夹,则首先建个文件夹);
  • 执行ansible -i hosts company -m ping -u root,即,可测试是否ping通对方;
  • 测试指令ansible fei(hosts里的组名) -a 'uptime'-a指定执行参数,-m省略,默认执行模块为command
  • 如果远程给对方安装软件;
代码语言:javascript
复制
   ansible fei -m raw -a 'yum install git'
 

学习是从不是一件轻松的事,但分享却是极为快乐的事。

希望此篇文章能让大家的学习ansible之路更为顺畅。

同时,欢迎大家投稿,分享您的不平凡故事。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装方法
  • 被管理主机设置
  • 指令详解
  • 使用 Playbook 管理复杂任务
    • 在远端机器上创建一个新的用户
      • apt模块
      • 实例解析
      • 远程管理同事电脑
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档