Ansible配置文件命令及模块

Posted 一docker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible配置文件命令及模块相关的知识,希望对你有一定的参考价值。

配置文件的内容,规则以及ansible命令的用法和常用模块。


Ansible配置文件

主配置文件ansible.cfg

配置文件内容解析

安装好ansible后,会默认生成的主要的配置文件。(yum安装自动生成,源码安装需要自行从模板复制。)下面介绍部分配置文件的具体含义

hostfile    = /etc/ansible/hosts   //hosts文件的位置
library = /usr/share/ansible //ansible默认搜寻模块的位置
pattern = * //如果没有提供hosts节点,这是playbook要通信的默认主机组.默认值是对所有主机通信
remote_tmp = $HOME/.ansible/tmp //Ansible通过远程传输模块到远程主机,然后远程执行,执行后在清理现场.在有些场景下,你也许想使用默认路径希望像更换补丁一样使用
forks = 5 //在与主机通信时的默认并行进程数 ,默认是5d
poll_interval = 15 //当具体的poll interval 没有定义时,多少时间回查一下这些任务的状态, 默认值是5秒
sudo_user = root //sudo使用的默认用户 ,默认是root
#ask_sudo_pass = True //用来控制Ansible playbook 在执行sudo之前是否询问sudo密码.默认为no
#ask_pass = True //控制Ansible playbook 是否会自动默认弹出密码
transport = smart //通信机制.默认 值为’smart’。如果本地系统支持 ControlPersist技术的话,将会使用(基于OpenSSH)‘ssh’,如果不支持将使用‘paramiko’.其他传输选项‘local’,‘chroot’,’jail’等等
#remote_port = 22 //远程SSH端口。 默认是22
module_lang = C //模块和系统之间通信的计算机语言,默认是C语言
#host_key_checking = False //检查主机密钥
timeout = 10 //SSH超时时间
#log_path = /var/log/ansible.log //日志文件存放路径
#module_name = command //ansible命令执行默认的模块
#private_key_file = /path/to/file //私钥文件存储位置


主机列表文件hosts

hosts文件基本格式

Ansible 通过读取主机清单/etc/ansible/hosts连接到多个远程主机上执行任务。

使用​​[]​​来对主机进行分类,可按照功能,机房,系统,业务等内容进行分类,方便对同一类型的主机进行批量操作。

[dbserver]
172.25.254.1
mysql.example.com
back.mysql.com:5505 //指定ssh的端口
test ansible_ssh_port=5321 ansible_ssh_host=172.25.254.2 //设定别名为test
db[1...5].example.com //支持通配符

可以为主机指定连接类型和连接用户

[web]
localhost ansible_connection=local
web1.example.com ansible_connection=ssh ansible_ssh_user=web


hosts文件可以使用的指令

ansible_ssh_host     //指定主机别名对应的真实 IP
ansible_ssh_port //指定连接到这个主机的 ssh 端口,默认 22
ansible_ssh_user //指定连接到该主机上的用户
ansible_sudo_pass //sudo 密码
ansible_sudo_exe //sudo 命令路径
ansible_connection //连接类型,可以是 local、ssh 或paramiko,ansible1.2 之前默认为 paramiko
ansible_ssh_private_key_file //私钥文件路径
ansible_shell_type // 目标系统的 shell 类型,默认为sh


Ansible命令

参数

-v:输出详细信息(可以使用多个v)

-i PATH:指定hosts文件位置

-f NUM :指定开启的进程数(默认为5)

-m MOULE :指定module的名称(默认为command)

-m DIRECTORY:指定module的目录来加载module,默认是/usr/share/ansible

-a,MODULE_ARGS:指定module模块的参数

-k:提示输入ssh的密码,而不是使用基于ssh的密钥认证

-u USERNAME:指定移动端的执行用户

-C:测试此命令执行会改变什么内容,不会真正的去执行


ansible指定主机或主机组的方法

直接指定

在命令中直接指定主机或主机组的名称。

ansible test-m shell -a cp /etc/ansible/ansible.cfg /etc/aansible.cfg.bak

使用通配符

匹配所有的主机:all 或 *

ansible all -m ping

匹配多个组的主机,中间用 : 隔开、

ansible db:test -m shell -a ls /var/log/

匹配两个组的交集

ansible db:&test -m script -a /etc/shell/ping.sh

匹配一个组的特定主机

ansible test[0] -m copy -a src=/var/www/html/index.html dest=/tmp owner=root group=root mode=0766

ansible test[0-3] -m file -a "src=/etc/resolv.conf dest=/tmp/resolv.conf state=link"

在一个主机组中,主机编号由0开始往下排。第一个命令表示test组中第一个主机;第二个命令表示test组中第1-4个主机。

混合匹配

anslible web:db:&test1:!test2 -m ping

在web或db组中,且存在于test1中,不能存在于test2中。

Ansible的模块

​ansible的模块​


以上是关于Ansible配置文件命令及模块的主要内容,如果未能解决你的问题,请参考以下文章

Ansible概述及常用命令模块

ansible的安装及配置文件更改

走进自动化运维之Ansible服务部署,附带(参数及模块)详解!

Ansible-1 基本认识及清单与模块

ansible使用笔记(二)常用命令使用及常用模块简介

Ansible 安装 及 基础模块介绍