Skip to content

Latest commit

 

History

History
144 lines (114 loc) · 8.34 KB

File metadata and controls

144 lines (114 loc) · 8.34 KB

OpenStack Динамикалық Инвентарь

Жобаның шабыт көзі openstack_ansible_dynamic_inventory авторы Maxim Rudakov.

Бұл жоба Go тілінде жазылған OpenStack үшін динамикалық инвентарьды іске асыру болып табылады. Ол серверлерді метадеректер негізінде топтарға бөлуге және сүзуге мүмкіндік береді. Әсіресе Ansible сияқты құралдарда динамикалық инвентарь қолданғанда, инфрақұрылымды автоматтандыру үшін өте қолайлы.

Мазмұны

Функционал

  • Динамикалық инвентарь құру: OpenStack-тен серверлер туралы ақпаратты автоматты түрде алып, динамикалық инвентарь түрінде құрастырады.
  • Метадеректер бойынша сүзу: көрсетілген метадеректер негізінде серверлерді таңдауға және белгілі бір орталарды таңдауға мүмкіндік береді.
  • Метадеректер бойынша топтастыру: метадеректер негізінде топтарды құрып, серверлерді рөлдерге, ортаға және басқа да атрибуттарға қарай ұйымдастырады.
  • Оңай интеграция жасау: Ansible және сол сияқты құралдармен үйлесімді JSON форматында деректерді шығарады.

Орнату

  1. Репозиторийді клондаңыз:
git clone https://github.com/atlet99/openstack-ansible-dynamic-inventory.git; cd openstack-ansible-dynamic-inventory
  1. Тәуелділіктерді орнатыңыз:
go mod tidy

Конфигурация

Конфигурация қоршаған орта айнымалылары арқылы басқарылады, .env файлын қолдануға болады.. Бұл айнымалылар OpenStack-ке қосылу деректерін және инвентарьды сүзу параметрлерін қамтиды. Толығырақ ақпаратты Қоршаған ортаның айнымалылары бөлімінен табуға болады.

.env файлы

Жоба түбірінде қоршаған орта айнымалыларын сақтау үшін .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 жасамауды қадағалаңыз.

Қолдану

  1. Бүкіл инвентарьды шығару үшін:
go run cmd/main.go --list
  1. Белгілі бір хост туралы ақпаратты сұрау үшін (үйлесімділік үшін бос 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 форматтау утилитасы

README локализациялары

Тілдер
Ағылшын
Орыс

Лицензия

Бұл жоба MIT лицензиясы бойынша таратылады. Толығырақ ақпаратты LICENSE файлын қараңыз.