跳转至

Ansible 小试牛刀


2018-03-15 by dongnan

功能

Ansible 是一款轻量级的 IT自动化工具,Ansible 默认通过 SSH 协议与远程机器进行通信,所以安装 Ansible 之后不需要运行任何后台进程,就可以直接管理远程的服务器。

优势

  • 容易上手,可作为批量执行工具。
  • 模块化,支持 playbook
  • 无客户端,客户端无需任何配置,由管理端配置好后即可使用。
  • 社区活跃,丰富的内置模块。

场景,

  • 应用部署
  • 配置管理
  • 任务编排
  • 等等。

环境

  • 操作系统
head -n1 /etc/issue

CentOS release 6.9 (Final)
  • 主机信息
管理节点: 10.0.1.1
托管节点: 10.0.1.2
  • SSH 认证 已经配置 SSH KEY方式登录,方法参考这里 。 Ansible 会默认假定你使用 SSH Key(推荐)但是密码也一样可以, 通过在需要的地方添加 --ask-pass选项来启用密码验证,如果使用了sudo 特性,当sudo需要密码时,也同样适当的提供了--ask-sudo-pass选项。

要求

  • 管理节点, 依赖 Python 2.6 上的版本。
  • 托管节点, 依赖 SSH 服务以及 Python 2.6 上的版本。

安装

软件包信息

yum info ansible
...省略
Summary     : SSH-based configuration management, deployment, and task execution system
Description :
            : Ansible is a radically simple model-driven configuration management,
            : multi-node deployment, and remote task execution system. Ansible works
            : over SSH and does not require any software or daemons to be installed
            : on remote nodes. Extension modules can be written in any language and
            : are transferred to managed machines automatically. 

使用 yum安装

yum install ansible

安装的版本

ansible --version
ansible 2.4.2.0
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.6/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.6.6 (r266:84292, Aug 18 2016, 15:13:37) [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] 

小试牛刀

Ansible 命令行执行方式有 Ad-HocAnsible-playbook两种方式,本文先会测试下 Hoc 模式,后续会对 playbook 测试。

配置文件

编辑 /etc/ansible/hosts 并在其中加入一个或多个托管节点,这里假设已经配置了 SSH KEY方式登录。

tail -n1  /etc/ansible/hosts

efg

测试通信

ansible all -v -m ping

Using /etc/ansible/ansible.cfg as config file
efg | SUCCESS => {
    "changed": false,
    "ping": "pong"
} 

测试执行一个命令

ansible all -v -m shell -a 'id'

Using /etc/ansible/ansible.cfg as config file
efg | SUCCESS | rc=0 >>
uid=0(root) gid=0(root) groups=0(root)

# 默认 shell模块,可以省略。
ansible all -v -a 'id'

Using /etc/ansible/ansible.cfg as config file
efg | SUCCESS | rc=0 >>
uid=0(root) gid=0(root) groups=0(root)

参数

Usage: ansible <host-pattern> [options]
Define and run a single task 'playbook' against a set of hosts

       -v, --verbose
           verbose mode (-vvv for more, -vvvv to enable connection debugging)

       -m MODULE_NAME, --module-name MODULE_NAME
           module name to execute (default=command)

       -a MODULE_ARGS, --args MODULE_ARGS
           module arguments 

参考

回到页面顶部