技术-自动化-ansible-ansible学习笔记

ansible简介

ansible是基于python的开发的自动化运维工具。实现了批量系统配置、批量程序部署、批量运行命令等功能。

官方地址

官方文档

中文手册

对管理主机的要求

Red Hat, Debian, CentOS, OS X, BSD等等各种版本 需要安装python2.6或者python2.7 不支持windows机器

对托管节点的要求

ansible使用ssh与托管节点通信 默认使用sftp,如果sftp不可以,可以在ansible.cfg配置文件中配置scp的方式。 托管节点需要安装python2.4以上版本。 如果python版本低于2.5,需要单独安装python-simplejson模块。

管理节点安装

yum install ansible

配置文件

配置文件详解

配置文件地址:/etc/ansible/ansible.cfg

inventory = /etc/ansible/hosts #托管主机的文件列表文件路径

remote_port = 8090 #托管主机的ssh默认端口

托管主机的文件列表

路径:/etc/ansible/hosts

主机和组

[zu] #方括号内是组名,可以操作一组. 120.92.51.3 #组内ip列表

文件中的host后面可以跟参数

ansible_ssh_host 将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.ansible_ssh_port ssh端口号.如果不是默认的端口号,通过此变量设置.ansible_ssh_user 默认的 ssh 用户名ansible_ssh_pass ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)ansible_sudo_pass sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)ansible_sudo_exe (new in version 1.8) sudo 命令路径(适用于1.8及以上版本)ansible_connection 与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 来判断'ssh' 方式是否可行.ansible_ssh_private_key_file ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.ansible_shell_type 目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为 'csh' 或 'fish'.ansible_python_interpreter 目标主机的 python 路径.适用于的情况: 系统中有多个 Python, 或者命令路径不是"/usr/bin/python",比如 \*BSD, 或者 /usr/bin/python 不是 2.X 版本的 Python.我们不使用 "/usr/bin/env" 机制,因为这要求远程用户的路径设置正确,且要求 "python" 可执行程序名不可为 python以外的名字(实际有可能名为python26). 与 ansible_python_interpreter 的工作方式相同,可设定如 ruby 或 perl 的路径....

ansible常用模块和命令

ansible-doc -l 使用这个命令可以查看所有的模块

ansible常用模块

1.ping测试是否连通管控主机

命令示例:

ansible ip -m ping

2.可以执行常用shell命令 command模块 命令示例:

ansible ip -m command "date"

3.可以上传文件,在上传之前对文件进行备份

copy模块 backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yesno content:用于替代"src",可以直接设定指定文件的值 dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录 directory_mode:递归的设定目录的权限,默认为系统默认权限 force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes others:所有的file模块里的选项都可以在这里使用 src:要复制到远程主机的文件在本地的地址,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用"/"来结尾,则只复制目录里的内容,如果没有使用"/"来结尾,则包含目录在内的整个内容全部复制,类似于rsync。 validate :The validation command to run before copying into place. The path to the file to validate is passed in via '%s' which must be present as in the visudo example below. 使用示例: ansible test -m copy -a "src=/root/test dest=/tmp/ backup=yes force=no"

synchronize模块(本地和管控主机都需要安装rsync) 使用rsync同步文件,其参数如下: archive: 归档,相当于同时开启recursive(递归)、links、perms、times、owner、group、-D选项都为yes ,默认该项为开启 checksum: 跳过检测sum值,默认关闭 compress:是否开启压缩 copy_links:复制链接文件,默认为no ,注意后面还有一个links参数 delete: 删除不存在的文件,默认no dest:目录路径 dest_port:默认使用的是ansible用来进行ssh连接的端口 dirs:传速目录不进行递归,默认为no,即进行目录递归 rsync_opts:rsync参数部分 set_remote_user:主要用于/etc/ansible/hosts中定义或默认使用的用户与rsync使用的用户不同的情况 mode: push或pull 模块,push模的话,一般用于从本机向远程主机上传文件,pull 模式用于从远程主机上取文件 使用示例: ansible test -m synchronize -a "src=/root/test2 dest=/tmp/" "changed": true, 为true为执行成功,changed为false时,为执行失败。执行失败的原因有一个是管控主机已经有相同的文件了。 注意事项 需要在关机主机和管控主机安装rsync才可以使用

4.脚本执行

script模块 在管控主机执行本地的脚本 使用示例: ansible ip -m script -a 'ansible_test.sh'

5.管理服务

servcei模块 该模块包含如下选项: arguments:给命令行提供一些选项 enabled:是否开机启动 yesno name:必选项,服务名称 pattern:定义一个模式,如果通过status指令来查看服务的状态时,没有响应,就会通过ps指令在进程中根据该模式进行查找,如果匹配到,则认为该服务依然在运行 runlevel:运行级别 sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟 state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded) 使用示例 ansible test -m service -a "name=nginx enabled=no"

6.管理定时任务

cron模块 用于管理计划任务包含如下选项: backup:对远程主机上的原任务计划内容修改之前做备份 cron_file:如果指定该选项,则用该文件替换远程主机上的cron.d目录下的用户的任务计划 day:日(1-31,*,*/2,……) hour:小时(0-23,*,*/2,……) minute:分钟(0-59,*,*/2,……) month:月(1-12,*,*/2,……) weekday:周(0-7,*,……) job:要执行的任务,依赖于state=present name:该任务的描述 special_time:指定什么时候执行,参数:reboot,yearly,annually,monthly,weekly,daily,hourly state:确认该任务计划是创建还是删除,默认为添加。absent选项为删除。 注意:只能删除cron里面带有#Ansible名字标识的。 如果name名字和原来cron里面相同了,则会覆盖之前的定时任务 user:以哪个用户的身份执行 使用示例 添加定时任务 ansible ip -m cron -a 'name="test" minute="33" hour="15" day="14" month="*" weekday="*" job="echo "1">/tmp/1" backup="True"' 删除定时任务 ansible ip -m cron -a 'name="test" state="absent"'

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180126G008W400?refer=cp_1026

扫码关注云+社区