Жобаның шабыт көзі openstack_ansible_dynamic_inventory авторы Maxim Rudakov.
Бұл жоба Go тілінде жазылған OpenStack үшін динамикалық инвентарьды іске асыру болып табылады. Ол серверлерді метадеректер негізінде топтарға бөлуге және сүзуге мүмкіндік береді. Әсіресе Ansible сияқты құралдарда динамикалық инвентарь қолданғанда, инфрақұрылымды автоматтандыру үшін өте қолайлы.
Динамикалық инвентарь құру:
OpenStack-тен серверлер туралы ақпаратты автоматты түрде алып, динамикалық инвентарь түрінде құрастырады.Метадеректер бойынша сүзу:
көрсетілген метадеректер негізінде серверлерді таңдауға және белгілі бір орталарды таңдауға мүмкіндік береді.Метадеректер бойынша топтастыру:
метадеректер негізінде топтарды құрып, серверлерді рөлдерге, ортаға және басқа да атрибуттарға қарай ұйымдастырады.Оңай интеграция жасау:
Ansible және сол сияқты құралдармен үйлесімді JSON форматында деректерді шығарады.
- Репозиторийді клондаңыз:
git clone https://github.com/atlet99/openstack-ansible-dynamic-inventory.git; cd openstack-ansible-dynamic-inventory
- Тәуелділіктерді орнатыңыз:
go mod tidy
Конфигурация қоршаған орта айнымалылары арқылы басқарылады, .env
файлын қолдануға болады.. Бұл айнымалылар OpenStack-ке қосылу деректерін және инвентарьды сүзу параметрлерін қамтиды. Толығырақ ақпаратты Қоршаған ортаның айнымалылары бөлімінен табуға болады.
Жоба түбірінде қоршаған орта айнымалыларын сақтау үшін .env
файлын жасаңыз (сонымен қатар, .env.template
файлын оңай көшіріп ала аласыз):
OS_AUTH_URL=https://your-openstack-url:5000/v3
OS_USERNAME=your-username
OS_PASSWORD=your-password
OS_PROJECT_DOMAIN_ID="default"
OS_REGION_NAME=your-region
OS_DOMAIN_NAME="default"
ENVIRONMENT_TAG=environment
ENVIRONMENT_VALUE=test
BASE_GROUP_NAME=prod-servers
Ескерту: .env
файлын .gitignore
-ге қосып, құпия ақпаратты кездейсоқ commit жасамауды қадағалаңыз.
- Бүкіл инвентарьды шығару үшін:
go run cmd/main.go --list
- Белгілі бір хост туралы ақпаратты сұрау үшін (үйлесімділік үшін бос JSON қайтарады):
go run cmd/main.go --host <your-hostname>
Әрбір қоршаған орта айнымалысы OpenStack-ке қосылуға және динамикалық инвентарьды басқаруға арналған.
# OpenStack аутентификациясының URL-і, әдетте OpenStack ортасы ұсынған.
# Keystone API-ге қол жеткізу үшін URL-ді қамтиды.
OS_AUTH_URL=https://your-openstack-url:5000/v3
# OpenStack API-ге кіру үшін пайдаланушы аты.
# Бұл пайдаланушыда ресурстарды басқаруға қажетті рұқсаттардың бар екеніне көз жеткізіңіз.
OS_USERNAME=your-username
# OpenStack пайдаланушысы үшін құпия сөз.
OS_PASSWORD=your-password
# OpenStack жобасы үшін домен ID-сі, әдетте "default", егер басқа мән көрсетілмесе.
# Бұл домен ресурстар басқарылатын жоба атауымен байланысты.
OS_PROJECT_DOMAIN_ID="default"
# OpenStack-те аймақ атауы, ол байланысатын аймақтық дата орталықты көрсетеді.
# Көп аймақты конфигурациялар үшін қажетті дата орталыққа қосылуды қамтамасыз етеді.
OS_REGION_NAME=your-region
# OpenStack пайдаланушысы үшін домен атауы, әдетте "default", егер нақты домен талап етілмесе.
OS_DOMAIN_NAME="default"
# Инвентарьда серверлерді сүзу үшін қолданылатын метадеректердің кілті.
# Скрипт метадеректерде осы кілт-значение жұбы бар серверлерді ғана таңдайды.
ENVIRONMENT_TAG=environment
# Серверді инвентарьға қосу үшін сәйкес келуі керек метадеректер мәні.
# ENVIRONMENT_TAG-пен бірге серверлер тиесілі болатын ортаны (мысалы, "test", "prod") анықтайды.
ENVIRONMENT_VALUE=test
# Инвентарьдағы таңдалған барлық серверлерге тағайындалатын негізгі топ атауы.
# Бұл атау серверлерді оңай басқару үшін логикалық топқа ұйымдастырады.
BASE_GROUP_NAME=prod-servers
openstack-ansible-dynamic-inventory
├── .env.template # # Қоршаған орта айнымалыларының файлы (қосымша)
├── .gitignore # Уақытша және құпия файлдарды елемеу файлы
├── LICENSE # Жоба лицензиясы
├── README.md # Жоба құжаттамасы
├── cmd
│ └── main.go # Кіру нүктесі; конфигурацияны жүктейді және инвентарьды инициализациялайды
├── pkg/
├── go.mod
├── go.sum
├── localization
│ ├── kz-KZ
│ │ └── README-kz-KZ.md # Құжаттаманың қазақша нұсқасы
│ └── ru-RU
│ └── README-ru-RU.md # Құжаттаманың орысша нұсқасы
└── pkg
├── inventory
│ ├── inventory.go # Инвентарь құру және топтастырудың негізгі логикасы
│ └── openstack.go # OpenStack-ке қосылу және деректерді алу
└── utils
└── json.go # JSON форматтау утилитасы
Тілдер |
---|
Ағылшын |
Орыс |
Бұл жоба MIT лицензиясы бойынша таратылады. Толығырақ ақпаратты LICENSE файлын қараңыз.