如何快速学习Ansible使用

Posted FreeSWITCH中文社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何快速学习Ansible使用相关的知识,希望对你有一定的参考价值。

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

安装方法

yum install ansible 
或者apt-get install ansible 

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

被管理主机设置

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

[web] linuxtoy.org 

同时,分组也能嵌套:

[vps:children] web db 

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

[1:3].linuxtoy.org # 等价于 1.linuxtoy.org、2.linuxtoy.org、3.linuxtoy.org

[a:c].linuxtoy.org # 等价于 a.linuxtoy.orgb.linuxtoy.orgc.linuxtoy.org

指令详解

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

ansible -i hosts all -m ping -u www 

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

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

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

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

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

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

使用 Playbook 管理复杂任务

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

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

- 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,可以敲入:

ansible-playbook user.yml 

执行结果为:

PLAY [create user] *************

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

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

apt模块

- apt: update_cache=yes

ansible-playbook用法

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

实例解析

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

远程管理同事电脑

  • 进入我的ansible(默认安装位置为/etc/ansible);

    [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

  • 如果远程给对方安装软件;

   ansible fei -m raw -a 'yum install git'

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

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

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


以上是关于如何快速学习Ansible使用的主要内容,如果未能解决你的问题,请参考以下文章

代码片段如何使用CSS来快速定义多彩光标

ansible 快速学习视频(阿里云大学)

16张图片帮助你快速学习Ansible

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务

前端开发工具vscode如何快速生成代码片段

前端开发工具vscode如何快速生成代码片段