dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2160
  • 铜币13127枚
  • 威望5808点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
阅读:496回复:1

ansible 小试牛刀

楼主#
更多 发布于:2018-03-15 10:20
功能
Ansible 是一款轻量级的 IT自动化工具,Ansible 默认通过 SSH 协议与远程机器进行通信,所以安装 Ansible 之后不需要运行任何后台进程,就可以直接管理远程的服务器。

优势

容易上手,可作为批量执行工具。
模块化,支持 playbook
无客户端,客户端无需任何配置,由管理端配置好后即可使用。
社区活跃,丰富的内置模块。
场景,1. 应用部署,2. 配置管理,3. 任务编排。

环境
1. 操作系统
head -n1 /etc/issue
CentOS release 6.9 (Final)

2. 主机信息
管理节点: 10.0.1.1
托管节点: 10.0.1.2

3. SSH 认证
已经配置 SSH KEY方式登录,方法参考这里
Ansible 会默认假定你使用 SSH Key(推荐)但是密码也一样可以,通过在需要的地方添加 --ask-pass选项来启用密码验证,如果使用了sudo 特性,当sudo需要密码时,也同样适当的提供了--ask-sudo-pass选项。

要求

1. 管理节点
依赖 Python 2.6 上的版本。

2. 托管节点
依赖 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.
1. 安装
yum install ansible

2. 版本
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-Hoc、Ansible-playbook两种方式,本文先会测试下 Hoc 模式,后续会对 playbook 测试。

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

2. 测试通信
ansible all -v -m ping
Using /etc/ansible/ansible.cfg as config file
efg | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

3. 执行命令
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

扩展Ansible Playbook 实战 批量安装 Docker
#
dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2160
  • 铜币13127枚
  • 威望5808点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
沙发#
发布于:2018-03-15 15:15
ansible 常用模块
# ping 模块
ansible all -m ping

# copy & file 模块
ansible all -m copy -a "src=/root/sh/ dest=/root/sh/"

# shell 模块
ansible -v all -m shell -a "crontab -l && ls /root/sh/"

# cron 模块
ansible pythonserver -m cron -a "name='for test' weekday='2' minute='0' hour=12 user='root' job='cat /etc/passwd >/root/111' cron_file='test ansible'"

# apt 模块
http://zongming.net/read-1363

# template 模块
http://zongming.net/read-1369

参考
Ansible 文档
Module Index
crontab
files-file
files-copy
魏巍-Ansible系列课程-基础入门-Playbook入门篇
ansible来了
#
游客

返回顶部