ansible hosts配置
- 编辑/etc/ansible/hosts
- 添加本机的public SSH key到目标机器的authorized_keys #ssh-copy-id
- 添加本机的私钥到Ansible
- 运行ansible all -m ping 测试是否添加成功
[all:vars] # *:vars 块变量,all:vars 全局变量
ansible_ssh_private_key_file=/root/.ssh/id_rsa
ansible_ssh_port=22
ansible_ssh_user=root [t3:vars] # t3 使用python解释器是python2
ansible_python_interpreter=/usr/bin/python2
nginx_port=80 # 私有变量在playbooks中使用 [t3]
192.168.11.162 [k8s:children] # 使用children 定义主机组之间继承关系
master
node [master]
k8s-master01 ansible_ssh_host=192.168.11.101
k8s-master01 ansible_ssh_host=192.168.11.102 [node]
k8s-node01 ansible_ssh_host=192.168.11.105
k8s-node01 ansible_ssh_host=192.168.11.106
Inventory 分文件管理(文件名即是组名)
#!/usr/bin/env python
# _*_coding:utf-8_*_ """
@Time : 2019/11/8 15:54
@Author: Simon
@File: get_ansible_hosts.py
@Software: PyCharm
""" try:
from ansible.parsing.dataloader import DataLoader
from ansible.inventory.manager import InventoryManager
from ansible.vars.manager import VariableManager
except ImportError as e:
print("请安装ansible模块, 安装方式pip install ansible") def main(sources):
"""
# 获取ansible hosts 列表
:param sources:
:return:
"""
hosts_list = []
loader = DataLoader()
inventory = InventoryManager(loader=loader, sources=sources)
variable_manager = VariableManager(loader=loader, inventory=inventory)
get_groups_dict = inventory.get_groups_dict()
host_list = inventory.hosts
for _host in host_list:
host = inventory.get_host(hostname=_host)
extra_vars = variable_manager.get_vars(host=host)
extra_vars_group = extra_vars.get("groups")
ans_port = extra_vars.get("ansible_ssh_port") if extra_vars.get("ansible_ssh_port") else extra_vars.get(
"ansible_port")
ans_host = extra_vars.get("ansible_ssh_host") if extra_vars.get("ansible_ssh_host") else extra_vars.get(
"ansible_host")
hosts_list.append({
"hostname": extra_vars.get("inventory_hostname"),
"host": ans_host,
"port": ans_port if ans_port else 22,
"group_name": extra_vars.get("group_names")
}) return hosts_list if __name__ == "__main__":
sources = ["/etc/ansible/hosts"]
print(main(sources))
Python 获取host列表
ansible hosts配置的更多相关文章
- Ansible安装配置及使用
一.Ansible特点 1.不需要安装客户端,通过sshd通信 2.基于模块工作,模块可以由任何序言开发 3.不仅支持命令行使用模块,也支持编写yaml格式的playbook 4.支持sudo 5.有 ...
- Ansible(二) - 配置及命令简介
Ⅰ. Ansible Inventory Hosts文件配置 # mkdir /etc/ansible # touch /etc/ansible/hosts # cat /etc/hosts 127. ...
- ansible hosts文件编写,简单使用测试(普通用户、sudo用户、root用户登录权限测试)
一.配置文件修改: 1.备份原配置文件: cp /etc/ansible/hosts /etc/ansible/hosts.bak 2.修改hosts配置文件: cat <<EOF> ...
- 1、Ansible安装配置
ansible介绍: Ansible是一款基于Python开发的自动化运维工具,主要是实现批量系统配置.批量程序部署.批量运行命令.批量执行任务等等诸多功能.Ansible是一款灵活的开源工具,能够很 ...
- ansible常用配置
1.什么是Ansible 部署参考连接:http://www.ansible.com.cn/ ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfeng ...
- Ansible基础配置与常用模块使用
环境介绍: Ansible服务端IP:192.168.2.215 Ansible客户端IP:192.168.2.216.192.168.2.218.192.168.2.113 一.创建Ansibl ...
- ansible安装配置及最佳实践roles
ansible是什么? ansible是一款轻量级配置管理工具,用于远程批量部署.安装.配置.类似的还有puppet.saltstack,各有所长,任君自选. 官方文档:http://docs.ans ...
- 使用Ansible自动配置JDK环境
1.首先安装好Ansible环境,具体步骤请见Ansible安装 2.先创建hosts文件(为后面编写脚本安装JDK做铺垫) [root@localhost /]# vi hosts [jdktest ...
- Ansible自动化配置详解
第1章 Ansible基本概述 1.1 ansible是一个配置管理系统configuration management system, 你只需要可以使用ssh访问你的服务器或设备就行. 1.安装软件 ...
随机推荐
- CTO说|非容器化应用怎么玩多云?Kubernetes不管我们管啊
Kubernetes已经成为容器编排系统的事实标准,是现在主流的跨云容器化应用操作系统. 但是,Kubernetes的目标并不是容器本身,而是承载其上的应用,本质上是为了解决(容器化)应用上云这个难题 ...
- NOIP提高组2018试题解析 Day1 T1 铺设道路 P5019
题目描述 春春是一名道路工程师,负责铺设一条长度为 nn 的道路. 铺设道路的主要工作是填平下陷的地表.整段道路可以看作是 nn 块首尾相连的区域,一开始,第 ii 块区域下陷的深度为 d_idi ...
- Mixing Milk 混合牛奶 USACO 贪心
1009: 1.3.1 Mixing Milk 混合牛奶 时间限制: 1 Sec 内存限制: 128 MB提交: 9 解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 1. ...
- Flash 上下文管理
1.Local() 作用:为每个协程或线程创建一个独立的内存空间 储存格式: { 唯一标识: {'stack': []} } 代码 try: from greenlet import getcurre ...
- Flask蓝图(Blueprint)
一.作用 1.目录结构划分 2.url添加前缀 url_prefix 3.应用特殊装饰器,在该蓝图定义的特殊装饰器,只在改蓝图的起效 二.简单示例 1.创建一个项目文件 2.创建一个同名的python ...
- rhel
1.查看硬盘大小 df -h 2.查看内存大小 free -h 3.配置主键名称 vim /etc/hostname# 查看 hostnamehostname 4.挂载镜像 mkdir -p /med ...
- [bzoj4942] [洛谷P3822] [NOI2017] 整数
题目链接 https://www.luogu.org/problemnew/show/P3822 想法 这个啊,就是线段树哇 最初的想法是每位一个节点,然后进位.退位找这一位前面第一个0或第一个1,然 ...
- Spring Cloud学习之-什么是Spring Cloud?
SpringCloud 什么是微服务? 要想学习微服务,首先需要知道什么是微服务?为什么会有微服务?相信看完架构的发展史读者就会明白 架构发展史 单体应用架构 如图所示:将所有的模块,所有内容(页面. ...
- MySQL数据库之xtrabackup物理备份(一)
前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备 ...
- 个人任务day5
今日计划: 写登录界面,学习如何使用js做出界面跳转的进度条动态显示. 昨日成果: 创建用户数据库.