📅  最后修改于: 2023-12-03 15:29:24.655000             🧑  作者: Mango
Ansible库存是Ansible的核心概念之一,它是用于管理Ansible主机的一组静态或动态清单的集合。Ansible库存文件是一个包含了目标主机和组信息的文本文件,可以是本地文件或远程URL。
静态库存是指手动维护的一个主机列表文件,文件中包含了所有需要管理的主机的IP地址和可识别的别名。静态库存可以是INI格式、YAML格式等,一般可以使用ansible命令的-i 参数指定。
动态库存是在Ansible运行时自动生成的主机列表,由指定的插件生成。Ansible提供了很多插件用来动态地生成主机列表,例如AWS EC2、OpenStack等云平台插件,也可以使用Python脚本来生成主机列表。
以下是Ansible静态库存示例,内容为INI格式
# 示例静态库存文件
[webservers]
web1.example.com
web2.example.com
[databases]
db1.example.com
db2.example.com
以下是Ansible动态库存示例,内容为Python脚本
#!/usr/bin/env python
import boto3
ec2 = boto3.resource('ec2', region_name='ap-northeast-1')
instances = ec2.instances.filter(Filters=[{
'Name': 'instance-state-name',
'Values': ['running']}])
ips = [instance.private_ip_address for instance in instances]
print('\n'.join(ips))
在Ansible的playbook中,可以使用inventory参数来指定要用的库存文件。可以使用group_vars和host_vars在库存文件中为主机或主机组设置变量。
以下是Ansible playbook示例,演示如何使用动态库存文件
---
- name: 安装Apache2
hosts: tag_webserver
become: true
vars:
http_port: 80
tasks:
- name: 安装Apache2
apt:
name: apache2
state: present
notify: start apache
handlers:
- name: start apache
service:
name: apache2
state: started
listen: start apache
Ansible库存是管理Ansible主机的一种基本机制,提供了静态和动态两种库存文件格式。在编写Ansible playbook时,库存文件可以通过inventory参数指定,并且可以使用group_vars和host_vars进一步指定变量。