yanqiufang 发表于 2018-7-30 12:54:33

ansible 测试

  ansible工具:简单的自动化IT工具,具体的就是“批量的在远程服务器上执行命令”
  ansible的优点:
  1 充分利用现有设施。使用 Ansible 无需安装服务端和客户端,只要 SSH 即可。这意 味着,任何一台装有 Ansible 的机器都可以成为强大的管理端。
  2 使用简单,快速上手相当容易。
  3 采用人类易读的格式。Ansible 的主机定义文件使用 INI 格式,支持分组,能够指定 模式;此外也能动态生成,这对管理云主机应当很有用。
  4 能够使用你熟悉的语言来编写模块。虽然 Ansible 是使用 Python 开发的,但它不会 将你限制到某种具体的编程语言,Bash、Python、Perl、Ruby 等等都可以。
  安装 Ansible
  Ansible 能够安装到 Linux、BSD、Mac OS X 等平台,Python 版本最低要求为 2.6。 常用 Linux 发行一般可以通过其自带的包管理器安装 Ansible:
yum install ansible   # RHEL/CentOS/Fedora,需要配置 EPEL  
apt-get install ansible # Debian/Ubuntu
  
emerge -avt ansible   # Gentoo/Funtoo
准备 Inventory  Inventory 文件用来定义你要管理的主机。其默认位置在 /etc/ansible/hosts ,如果不保存在默认位置,也可通过 -i 选项指定。
  被管理的机器可以通过其 IP 或域名指定。未分组的机器需保留在 hosts 的顶部,分组 可以使用 [] 指定,如:
  
linuxtoy.org
  同时,分组也能嵌套:
  
web
  
db
  此外,也可以通过数字和字母模式来指定一系列连续主机,如:
.linuxtoy.org # 等价于 1.linuxtoy.org、2.linuxtoy.org、3.linuxtoy.org  
.linuxtoy.org # 等价于 a.linuxtoy.org、b.linuxtoy.org、c.linuxtoy.org
  执行命令来看看 Ansible 是否能正常工作:
ansible -i hosts all -m ping -u www  该命令选项的作用分别为:

[*]  -i:指定 inventory 文件,使用当前目录下的 hosts
[*]  all:针对 hosts 定义的所有主机执行,这里也可以指定组名或模式
[*]  -m:指定所用的模块,我们使用 Ansible 内置的 ping 模块来检查能否正常管理远端机器
[*]  -u:指定远端机器的用户
  如果返回如下结果:
linuxtoy.org | success >> {  
    "changed": false,
  
    "ping": "pong"
  
}
  则说明一切正常。
  下面我们再看看远端机器的 uptime:
ansible vps -a 'uptime'  这将输出:
linuxtoy.org | success | rc=0 >>  
11:23:16 up 177 days, 21:19,0 users,load average: 0.55, 0.45, 0.39
  此处我们省略了 -m,Ansible 默认使用 command 模块;-a 指定模块的参数,即执行 uptime 命令。
  使用 Ad-Hoc 管理简单任务
  执行 Ad-Hoc 就跟我们在 Linux 下执行单行命令差不多,用来快速完成简单的任务十分 方便。比如:如果被管理端的 Python 为 2.4,那么需要 python-simplejson 这个包。我们可以通过以下命令在所有 CentOS 主机上安装它:
ansible all -m raw -a 'yum -y install python-simplejson  使用 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 ************************************************************  

  
TASK: *****************************************************
  
changed:
  

  
PLAY RECAP ********************************************************************
  
linuxtoy.org               : ok=1    changed=1    unreachable=0    failed=0
  更多的内容会持续的填补。
页: [1]
查看完整版本: ansible 测试