ansible-playbook 配置 hosts 后可以指定变量,通过-k 可以交互输入密码,也可以将密码写在 hosts 文件中。

入口 yaml 文件中通过 {{ ** }} 获取变量,命令行通过 -i 指定 hosts 文件, -e 传入参数,如果同时传入多个 host 参数可使用逗号分隔,同时也可以使用 hosts 文件中的变量 ,其中 remote_user: root 可以在 ansiplay-book 命令行中使用 -u root 替代。

[root@10_1_162_39 host_vars]# ll
total
-rw-r--r-- root root May : hosts
-rw-r--r-- root root May : test1.yaml
-rw-r--r-- root root May : test.playbook
[root@10_1_162_39 host_vars]# cat hosts
[web]
10.1.167.36
[web:vars]
ansible_ssh_port= [web1]
10.1.162.18
[web1:vars]
ansible_ssh_port= [root@10_1_162_39 host_vars]# cat test1.yaml
---
- hosts: "{{ host }}"
gather_facts: false
remote_user: root
tasks:
- shell: uptime
register: output
- debug: var=output.stdout
[root@10_1_162_39 host_vars]# ansible-playbook test1.yaml -i hosts -e host=10.1.162.18 -k
SSH password: PLAY [10.1.162.18] ************************************************************* TASK [command] *****************************************************************
changed: [10.1.162.18] TASK [debug] *******************************************************************
ok: [10.1.162.18] => {
"output.stdout": " 09:26:36 up 18:05, 7 users, load average: 0.05, 0.10, 0.08"
} PLAY RECAP *********************************************************************
10.1.162.18 : ok= changed= unreachable= failed= [root@10_1_162_39 host_vars]#

配置密钥后还需要指定 host 端口,由于只配了一个 ip 的密钥,则另外 ip 报错,可以通过 -k 输入另外 ip 的密码即可。(这里的原理应该是 两个 ip 都会验证这个密码,其中一个 ip 密码验证通过,另外一个 ip 验证不通过则会判断是否已经打通公钥认证。当然顺序可能相反,没有看源码。而且 ansible 本身会缓存密码,缓存时间比较短,应该是几分钟内,这段时间内即使输错密码也可以登陆,这里应该是类似 session 原理)

[root@10_1_162_39 host_vars]# cat hosts
[web]
10.1.162.18:
10.1.167.36: [root@10_1_162_39 host_vars]# ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 322 root@10.1.162.18 "
root@10.1.162.18's password:
Now try logging into the machine, with "ssh '-p 322 root@10.1.162.18 '", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. [root@10_1_162_39 host_vars]# ansible web -m shell -a ifconfig -i hosts
10.1.162.18 | SUCCESS | rc= >>
eth0 Link encap:Ethernet HWaddr :0C:::BD:
inet addr:192.168.238.129 Bcast:192.168.238.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe21:bd17/ Scope:Link
UP BROADCAST RUNNING MULTICAST MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (347.3 MiB) TX bytes: (6.4 MiB)
Interrupt: Base address:0x2000 lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::/ Scope:Host
UP LOOPBACK RUNNING MTU: Metric:
RX packets: errors: dropped: overruns: frame:
TX packets: errors: dropped: overruns: carrier:
collisions: txqueuelen:
RX bytes: (480.0 b) TX bytes: (480.0 b) 10.1.167.36 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
"unreachable": true
}

ansible-playbook 主机变量2的更多相关文章

  1. ansible的主机变量

    ansible的主机变量(常用):ansible_ssh_host     #用于指定被管理的主机的真实IPansible_ssh_port     #用于指定连接到被管理主机的ssh端口号,默认是2 ...

  2. Ansible Playbook 使用变量

    如何在 Playbook 中定义并使用变量: vars: - user: "test" # 定义变量 tasks: - name: create user user: name=& ...

  3. Ansible Playbook 变量与 register 详解

    ansible 定义变量方式与[多层]变量引用,以及 register 详解 主机规划 添加用户账号 说明: 1. 运维人员使用的登录账号: 2. 所有的业务都放在 /app/ 下「yun用户的家目录 ...

  4. ansible playbook最佳实践

    本篇主要是根据官方翻译而来,从而使简单的翻译,并没有相关的实验步骤,以后文章会补充为实验步骤,此篇主要是相关理论的说明,可以称之为中文手册之一,具体内容如下: Ansible playbooks最佳实 ...

  5. ansible笔记(10):初识ansible playbook

    ansible笔记():初识ansible playbook 假设,我们想要在test70主机上安装nginx并启动,我们可以在ansible主机中执行如下3条命令 ansible test70 -m ...

  6. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  7. 写Ansible playbook添加zabbix被监控的对象

    本主题达到的效果是能通过编写Ansible Playbook,创建zabbix主机组,把被监控的对象加入到zabbix监控系统中,同时链接到对象的模板. 1.准备工作 在zabbix服务器上面,我们需 ...

  8. Ansible Playbook Variables

    虽然自动化存在使得更容易使事情重复,但所有的系统可能不完全一样. 在某些系统上,您可能需要设置一些与其他操作略有不同的行为或配置. 此外,一些观察到的远程系统的行为或状态可能需要影响如何配置这些系统. ...

  9. Ansible Playbook Roles and Include Statements

    介绍 虽然可以在一个非常大的文件中编写一个playbook(您可能会以这种方式开始学习playbook),但最终您将需要重新使用文件并开始组织事情. 在基本级别,饱含任务的文件允许您将配置策略分解成较 ...

  10. Ansible playbook基础组件介绍

    本节内容: ansible playbook介绍 ansible playbook基础组件 playbook中使用变量 一.ansible playbook介绍 playbook是由一个或多个“pla ...

随机推荐

  1. jdk5新特性

    前两天看到jdk10试用版都出来了,才发现自己连1.8都没用过,对不同版本的jdk的新特性也不是太了解,所以想还是百度一下看看人家怎么说然后自己记录总结一下,其中jdk1.8的新特性可以到edu.51 ...

  2. Haskell语言学习笔记(20)IORef, STRef

    IORef 一个在IO monad中使用变量的类型. 函数 参数 功能 newIORef 值 新建带初值的引用 readIORef 引用 读取引用的值 writeIORef 引用和值 设置引用的值 m ...

  3. 更新日志(建议升级到2017.1.18a) && 更新程序的方法

    更新程序的步骤: 1,在控制面板里点击备份当前数据库文件到磁盘,把当天获取的信息从内存写到磁盘/存储卡.2,下载最新版的源码 wget -O "infopi.zip" " ...

  4. c#栈的习题2

    —.单项选择题1.栈和队列具有相同的(    ). A.抽象数据类型     B.逻辑结构     C.存储结构     D.运算2.栈是(). A.顺序存储的线性结构     B.链式存储的非线性结 ...

  5. 【Java】JVM(四)、虚拟机参数配置

    1. -Xms20M      JVM启动时候的内存大小为20M   2. -Xmx20M     JVM内存最大值是20M 将其与Xms大小一致可以避免JVM内存自动扩展   3. -Xss128K ...

  6. Nsis Sqlite Plugin

    1.https://stackoverflow.com/questions/15346338/nsis-and-sqlite-integration 2.http://nsis.sourceforge ...

  7. cf-Round541-Div2-F(并查集+静态链表)

    题目链接:http://codeforces.com/contest/1131/problem/F 思路: 很容易看出这是一道并查集的题目,因为要输出每个cage中住的鸟的编号,故采用静态链表.用l[ ...

  8. keras—多层感知器识别手写数字算法程序

    #coding=utf-8 #1.数据预处理 import numpy as np #导入模块,numpy是扩展链接库 import pandas as pd import tensorflow im ...

  9. asp.net后台解析JSON,并将值赋给对象

    示例代码如下: using System; using System.Collections.Generic; using System.Web.Script.Serialization; publi ...

  10. 常用特殊符号的HTML代码(HTML字符实体)

    适当使用实体,对页面开发有相当大的帮助. 自己收集的一些常用的以实体代替与HTML语法相同的字符,避免浏览解析错误. 常用HTML字符实体(建议使用实体): 字符 名称 实体名 实体数 • 圆点   ...