Ansible 清单与命令解析(2)



title: Ansible 清单与命令解析(2)
date: 2018-12-01 10:54:14
tags:

  • Ansible
    categories: Ansible
    copyright: true
    ---

Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能,ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架.

在大规模的配置管理工作中我们需要管理不同业务的不同机器,这些机器的信息都存放在 Ansible 的 Inventory 组件里面,在我们工作中配置部署针对的主机必须先存放在 Invento 组里面,这样才能使用 Ansible 对它进行操作,默认 Ansible 的 Inventory 是一个静态的 INI 格式的文件/etc/ansible/hosts 当然,还可以通过 ANSIBLE_HOSTS 环境变量指定或者运行 ansible 和 ansible-playbook 的时候用 -i 参数临时设置.

主机和组

我们可以通过配置/etc/ansible/hosts这个文件来定义主机和主机组,例如下面的代码.

[[email protected] ~]# cat -n /etc/ansible/hosts

1 192.168.1.10 ansible_ssh_pass='123123'
2 192.168.1.20 ansible_ssh_pass='123123'
3
4 [docker]
5 172.168.1.10[1:9]

6 [docker:vars]
7 ansible_ssh_pass='123123'

8 [web_server]
9  192.168.10.10
10 192.168.10.20
11 192.168.10.30

上图的参数解析:
● 第1-2行:定义了两台主机,并且使用内置变量给予了SSH登陆密码.
● 第4-5行:定义了一个docker组,且组内有101-109这9台机器的定义.
● 第6-7行:定义为上面的docker组统一赋值一个密码.
● 第8-11行:定义了一个web_server组,其中有三台主机.

这就是,常用的组的定义与声明部分啦.

端口与别名

ssh默认的端口是22 (此时的Ansible主机配置文件可以省略),但是如果某些主机的ssh运行在自定义的端口上,Ansible使用Paramiko进行ssh连接时不会使用你ssh配置文件中列出的端口,但是如果修改ansible使用openssh进行ssh连接时将会使用:

1.在Client客户端上ssh开启2个端口连接,下面一段话随意加入到指定配置文件里即可.

[[email protected] ~]# vim /etc/ssh/sshd_config
Port 10086
Port 22

[[email protected] ~]# systemctl restart sshd

2.在Ansible服务端的配置,配置主机清单列表同时指定一个主机端口即可.

[[email protected] ~]# vim /etc/ansible/hosts

[web_server]
192.168.10.10:10086
192.168.10.20:10086

[web_server:vars]
ansible_ssh_pass='123123'

使用主机变量

这里介绍 Ansible Invento 的内置的一些参数,这些参数我们在实际工作中也会经常使用到.

内置参数 参数说明
ansible_ssh_host 指定被管理的主机的真实IP
ansible_ssh_port 指定连接到被管理主机的ssh端口号,默认是22
ansible_ssh_user ssh连接时默认使用的用户名
ansible_ssh_pass ssh连接时的密码
ansible_sudo_pass 使用sudo连接用户时的密码
ansible_sudo_exec 如果sudo命令不在默认路径,需要指定sudo命令路径
ansible_ssh_private_key_file 秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项
ansible_shell_type 目标系统的shell的类型,默认sh
ansible_connection SSH 连接的类型:local,ssh,paramiko
ansible_python_interpreter 用来指定python解释器的路径

上面的实例也可以配置直接使用用户名和密码进行连接

[[email protected] ~]# vim /etc/ansible/hosts

[web_server]
192.168.10.10 ansible_ssh_port=10086 ansible_ssh_user=root ansible_ssh_pass='123123'

[docker_server]
192.168.10.10
192.168.10.20

[docker_server:vars]
ansible_ssh_port=10086
ansible_ssh_user=root
ansible_ssh_pass='123123'

Ansible配置文件解析

Ansible 配置文件是以 ini 格式存储配置数据的,在 Ansible 中,几乎所有的配置项都可以通过 Ansible 的 playbook 或环境变量来重新赋值,在运行 Ansible 命令时,命令将会按照预先设定的顺序查找配置文件,具体的ansible配置文件包括以下两个部分:

/etc/ansible/ansible.cfg 和 /etc/ansible/hosts

● /etc/ansible/ansible.cfg 主要配置Ansible的一些参数信息
● /etc/ansible/hosts 主机清单(被控主机文件),或分组管理
● /usr/bin/ansible* 记录了Ansible的命令

如果你通过操作系统软件包管理工具或 pip 安装,那么你在/etc/ansiblc目录下应该已经有了 ansible.cfg 配置文件.如果你是通过 GitHub 仓库安装的,在你复制的仓库中 examples 目录下可以找到 ansible.cfg 你可以把它拷贝到/etc/ansible目录下.

接下来看一下Ansible的主配置文件 /etc/ansible/ansible.cfg 里面的参数解析,并说明每个参数代表的含义.

配 置 参 数 参 数 的 说 明
inventory = /etc/ansible/hosts Ansible存放可通信主机的列表
library = /usr/share/my_modules/ Ansible默认搜寻模块的位置
remote_tmp = $HOME/.ansible/tmp Ansible通过远程传输模块到远程主机,默认传输路径
log_path = /var/log/ansible.log Ansible默认日志文件保存位置
pattern = * 如没有提供主机列表,则默认值是对所有主机通信
forks = 5 默认执行线程数量
poll_interval = 15 多久回查一下这些任务的状态,默认值是15秒
sudo_user = root sudo使用的默认用户,默认是root
ask_sudo_pass = True 控制playbook在执行sudo之前是否询问sudo密码.默认no
transport = smart 通信机制.默认值为smart
remote_port = 22 远程SSH端口,默认是22
module_lang = C 模块和系统之间通信的计算机语言,默认是C语言
host_key_checking=false 设置是否检查SSH主机密钥

就介绍这些,这是最常用的,其他的文本请参考

http://www.ansible.com.cn/docs/intro_configuration.html#environmental-configuration

Ansible命令参数解析

看完了上面的配置文件的解析,我们再来看一下,Ansible命令的常用语法格式依旧常用命令参数吧.

[[email protected] ~]# ansible --help

命令语法:[ ansible [选项] [模块] [参数] [主机列表] ]

        -m              #要执行的模块,默认为command
        -a              #指定模块的参数
        -u              #ssh连接的用户名,默认是root
        -k              #提示输入ssh登录密码,当使用密码验证的时候用
        -s              #sudo权限运行
        -U              #sudo到哪个用户,默认为root
        -K              #提示输入sudo密码,当不是NOPASSWD模式时使用
        -C              #只是测试一下会改变什么内容,不会真正去执行
        -c              #指定连接类型(default=smart)
        -f              #fork指定进程并发数,默认为5个
        -i              #指定hosts文件路径,默认default=/etc/ansible/hosts
        -I              #指定pattern对已匹配的主机中再过滤一次
        --list-host     #打印主机列表
        -M              #要执行的模块路径,默认为/usr/share/ansible
        -o              #压缩输出摘要输出
        --private-key   #指定一个私钥路径
        -T              #ssh连接超时时间,默认是10秒
        -t              #日志输出到该目录,日志文件名以主机命名
        -v              #显示详细日志

PlayBook命令参数解析

该指令对于需反复执行的、较为复杂的任务,我们可以通过定义 Playbook 来搞定,它允许使用变量、条件、循环、以及模板,也能通过角色及包含指令来重用既有内容,其通过读取playbook 文件后执行相应的动作.

[[email protected] ~]# ansible-playbook -h

命令语法:[ ansible-playbook [选项] [参数] .yml ]

        -m                             #要执行的模块,默认为command
        -C                             #测试运行效果
        --flush-cache                  #清除fact缓存
        --syntax-check                 #语法检查
        --force-handlers               #如果任务失败,也要运行handlers
        --list-tags                    #列出所有可用的标签
        --list-tasks                   #列出将要执行的所有任务
        --skip-tags=SKIP_TAGS          #跳过运行标记此标签的任务
        --start-at-task=START_AT_TASK  #在此任务处开始运行
        --step                         #一步一步在运行之前确认每个任务
        -t TAGS,--tags=TAGS            #只运行标记此标签的任务

原文地址:https://www.cnblogs.com/LyShark/p/10886452.html

时间: 2024-10-11 12:39:35

Ansible 清单与命令解析(2)的相关文章

Ansible之系列命令详解

ansible系列命令有:ansible.ansible-doc.ansible-playbook.ansible-vault.ansible-console.ansible-galaxy.ansible-pull,这些命令每个命令都有它独特的作用和用法,接下来我们一一来了解它的用法. 1.ansible-doc:这个命令主要作用是显示模块的帮助信息,有点类似Linux里的man命令. 命令用法: ansible-doc [options] [module...] 常用选项: -a:显示所有模块

闲云控制台(一)控制台命令解析框架

发布闲云控制台连载系列,会不定期加入新功能~ 先发一个命令解析的框架 /************************************************** *******************闲云万能控制台********************* ********* ********* 作者: 闲云野鹤 ********* QQ: 836663997 ********* QQ群: 116920287 欢迎加入 ********* 邮箱: [email protected]

linux 命令解析2

基本命令  uname -a -s hostname显示主机名若是要永久生效,则编辑以下文件  #vim /etc/sysconfig/network    ssh远程登录#ssh 10.1.1.54 (是以root用户登录的)  #ssh [email protected](是以tom身份登录)  #ssh -Y 10.1.1.54(可以启动图形界面的远程登陆) scp远程拷贝  #scp 10.1.1.54:/etc/passwd /tmp/test(将目的地址10.1.1.54上的/etc

liunx 命令解析1

RHEL5.3安装光盘主要文件内容:ClusterClusterStorageimagesisolinuxServerVT showmount -e 10.1.1.20显示指定的主机可供挂载的目录 将U盘作为引导盘dd if=diskboot.img of=/dev/sdb CTRL + SHIFT + T增加终端标签 常用的shell  cat /etc/shells    /bin/sh   /bin/bash   /sbin/nologin   /bin/tcsh   /bin/csh 

ASA 8.0命令解析

有些朋友对配防火墙还是有问题,其实配置ASA防火墙很简单,常用的命令有hostname.interface(ip address.no shutdown.nameif.security-level).nat.global.route.static.access-list.access-group. 下面来解析一台ASA 8.0的配置 ASA Version 8.0(2)  //注意版本,8.3以后NAT命令有所变化!hostname ciscoasa   //主机名domain-name san

使用ansible远程执行命令

使用ansible远程执行命令 1.ansible简介 ansible的官方定义:"Ansible is Simple IT Automation"--简单的自动化IT工具.这个工具的目标: 自动化部署APP 自动化管理配置项 自动化的持续交付 自动化的(AWS)云服务管理. 其本质上就是在远程在多台服务器执行一系列命令和文件同步,和以前的介绍的使用并行ssh提高工作效率功能类似,他们都是使用ssh协议进行远程操作,但ansible比pssh功能更强大,比如支持主机列表分组.支持pla

Linux中的命令解析

命令解析: [[email protected]~]# []                  没有特殊意义 root:             当前登录用户(管理员用户) @                 没有特殊含义 localhost      主机名 ~                  代表当前所在(~家目录) #                  代表当前登录用户是管理员 $                  如果是$则表示普通用户 ----------- 关于文件 格式: 命令

Linux c 开发 - Memcached源码分析之命令解析(2)

前言 从我们上一章<Linux c 开发 - Memcached源码分析之基于Libevent的网络模型>我们基本了解了Memcached的网络模型.这一章节,我们需要详细解读Memcached的命令解析. 我们回顾上一章发现Memcached会分成主线程和N个工作线程.主线程主要用于监听accpet客户端的Socket连接,而工作线程主要用于接管具体的客户端连接. 主线程和工作线程之间主要通过基于Libevent的pipe的读写事件来监听,当有连接练上来的时候,主线程会将连接交个某一个工作线

ASA 8.4命令解析

前面发表了一篇文章是ASA 8.0版本的,后面用到8.4发现命令有很多不一样,特发一篇8.4版本的命令可以和前面命令做对比和参考 需要注意的是 1.这边没有nat 0,也就是说到DMZ区域不需旁路. 2.如果是ASA 5505的设备,则需定义vlan端口地址然后把防火墙相应端口加入对应vlan. : ASA Version 8.4(2)                                      //版本8.4 ! hostname fw enable password 8Ry2Y