除了清单中的主机和IP地址列表( ansible yaml文件)外,是否需要添加变量或键,例如:
或者应该将它们放在不同的文件中,比如角色(任务)。拜托,帮我决定哪条信息到哪里去了。我的示例yaml文件如下:
---
cred:
user: a
pass: 1
center:
dbs:
- db:
fqdn: center-db.foo.com
cn: center-db
files:
- C:\folder\Server.msi
ip: 1.1.1.1
queues:
- queue:
fqdn: center-queue.foo.com
cn: center-queue
files:
- C:\folder\Server.msi
ip: 2.2.2.2
apps:
- app:
fqdn: center-app.foo.com
cn: center-app
files:
- C:\folder\Server.msi
- C:\folder\Center-Client.msi
- C:\folder\files
ip: 3.3.3.3
clients:
- client:
db:
cn: Client-DB
app:
fqdn: Client-APP.foo.com
cn: Client-APP
files:
- C:\folder\Server.msi
- C:\folder\Client-Client.msi
ip: 4.4.4.4发布于 2021-06-22 14:38:56
Ansible允许以多种方式构造库存、vars和任务。根据不同的所期望的,发展你自己的观点,把事情放在一个逻辑的方式。
实验室处于一个安全的VLAN中,这意味着为了从远程运行脚本,我需要用他们的IP连接到机器,而不是用他们的FQDN和提供凭证。
假。DNS对于每个环境都是可能的。也许将一个区域hiddai.lab.example.net委托给一个测试实验室DNS服务器,并且主机在这个区域中使用FQDN。
也就是说,可以为连接插件提供覆盖主机名或IP地址的ansible_host变量。
不要使用分配给其他用户的IP地址。1.1.1.1不是你的,而是Cloudflare DNS。使用您的真实IP地址或文档测试网,如192.0.2.0/24 198.51.100.0/24 203.0.113.0/24。
此外,我需要决定我的产品是否安全地安装在我的实验室(哪种协议- HTTPS还是HTTP?)
总是安全的所以HTTPS。实验室设置可以更轻松的PKI,个人简单CA,自我签名证书。
除了清单中的主机和IP地址列表( ansible yaml文件)外,是否需要添加变量或键,例如:“凭据”、“协议”、“文件”、“计算机类型”等。
否,请将主机列表与角色级应用程序配置数据分开。这就允许多个库存。在多个实验室、阶段和生产库存之间尽量减少数据重复。
将库存限制在连接到主机所需的范围内:主机名、用户、可能是凭据、连接插件。将应用程序详细信息放在其他地方,例如group_vars。
cred:
user: a
pass: 1说到凭据,我认为一个字符密码短得令人无法接受。甚至不要把它当作假的例子。理想情况下,用更好的方法替换密码auth,比如密钥或基于证书的auth。或者至少有长的基于单词的密码,如unluckily-pretense-occupy-quartered。
您的文件路径似乎是Windows。阅读抗的winrm文档,并考虑您对auth的选择。
在库存中存储creds意味着任何拥有库存文件的人都可以运行命令。适当地保护文件。考虑将creds存储在单独的密钥文件中,或者存储在某些您可以通过不可访问查找访问的秘密系统中。
您的vars文件是YAML,但不是Ansible's静态YAML库存插件所期望的结构。也许像inventory/lab.yml这样的东西,我已经把一些值转换成每个互联网RFCs的实际例子。
---
all:
children:
windows:
# Group containing only Windows hosts allow for
# Windows-specific auth and connection variables
vars:
ansible_user: a
ansible_password: unluckily-pretense-occupy-quartered
ansible_connection: winrm
ansible_winrm_transport: credssp
children:
db:
# FQDN as inventory_hostname should resolve if in DNS
# Ansible pieces out the top label for you as special var inventory_hostname_short
hosts:
center-db.hiddai.lab.example.net:
# ansible_host overrides what to connect to
# Such as when there is no DNS
ansible_host: 203.0.113.23
children:
queue:
hosts:
center-queue.hiddai.lab.example.net:
ansible_host: 203.0.113.83
children:
app:
hosts:
center-app.hiddai.lab.example.net:
ansible_host: 203.0.113.62
children:
client:
hosts:
client-app.hiddai.lab.example.net:
ansible_host: 203.0.113.28
db: center-db我不清楚什么是“中心”在这个例子中,软件产品,部署名称,客户名称?由于Ansible库存实际上在内部是持平的,所以我已经崩溃了。如果需要,将其作为变量或组添加回。
关于主机特定的应用程序配置数据,请考虑group_vars。这些可以是相对于您的库存文件,与文件名匹配的组名。
库存/组vars/windows.yml
---
base_dir: 'C:\folder\'
files_common:
- Server.msi库存/组vars/app.yml
---
files_additional:
- files
- Center-Client.msi库存/组vars/client.yml
---
files_additional:
- Client-Client.msi注意,我为这些文件发明了两个变量。由于名称不同,以后可以将它们合并到一个列表中,因此{{ files_common + files_additional }}
理想情况下,编写和使用Ansible角色,这些角色有自己的变量和任务。考虑适合大多数用例的角色默认值。例如,安装这些msi包的win_package任务,以及默认情况下从https服务器下载它们。但是,将源包文件设置为一个变量,以便可以重写它。
剧本就是把这些主持人的模式映射到角色上的。我不知道该怎么称呼你的应用程序,只给出通用的名字,所以我用“东西”作为角色的前缀。play.yml:
---
hosts: db
roles:
- thingdb
hosts: queue
roles:
- thingqueue
hosts: app
roles:
- thingapp
hosts: client
roles:
- thingclient用ansible-playbook play.yml -i inventory/lab.yml运行这样一个剧本
不包括角色。我不知道你想做什么,这个答案有点长。
https://serverfault.com/questions/1067425
复制相似问题