📜  Ansible库存(1)

📅  最后修改于: 2023-12-03 15:29:24.655000             🧑  作者: Mango

Ansible库存介绍

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进一步指定变量。