mirror of
https://github.com/jung-geun/policy-routing.git
synced 2025-12-19 18:24:40 +09:00
README.md에 Packer를 사용한 이미지 배포 섹션 추가 및 admin-openrc.sample 파일 생성, packer-openstack-ubuntu.json의 이미지 이름 및 가시성 수정, pbr-script-cloud-init.yaml의 스크립트 실행 명령 수정
This commit is contained in:
60
README.md
60
README.md
@@ -33,4 +33,62 @@ ip rule 을 확인하여 정책 기반 라우팅이 설정되었는지 확인할
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
ip rule ls
|
ip rule ls
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## packer 를 사용하여 이미지 배포
|
||||||
|
|
||||||
|
openstack 에 자동으로 PBR 시스템을 구성하는 packer template 을 제공합니다.
|
||||||
|
|
||||||
|
### Packer 설치
|
||||||
|
|
||||||
|
https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli
|
||||||
|
|
||||||
|
### Packer OpenStack plugin 설치
|
||||||
|
|
||||||
|
openstack 에서 사용할 수 있게 하려면 Packer OpenStack 플러그인을 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
packer plugins install github.com/hashicorp/openstack
|
||||||
|
```
|
||||||
|
|
||||||
|
### Packer OpenStack 템플릿 설정
|
||||||
|
|
||||||
|
packer 를 사용하기 전에 openrc를 설정해야합니다
|
||||||
|
|
||||||
|
```bash
|
||||||
|
vi admin-openrc
|
||||||
|
```
|
||||||
|
|
||||||
|
설정 파일 내용은 아래 내용들을 채워야합니다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export OS_USER_DOMAIN_NAME=Default
|
||||||
|
export OS_PROJECT_NAME=admin
|
||||||
|
export OS_TENANT_NAME=$OS_PROJECT_NAME
|
||||||
|
export OS_USERNAME=admin
|
||||||
|
export OS_PASSWORD=ADMIN_PASSWORD
|
||||||
|
export OS_AUTH_URL=http://OPENSTACK_KEYSTONE_HOST/v3
|
||||||
|
export OS_IDENTITY_API_VERSION=3
|
||||||
|
export OS_IMAGE_API_VERSION=2
|
||||||
|
export OS_SOURCE_IMAGE_ID=원본_이미지_ID
|
||||||
|
export OS_NETWORK_NAME=이미지_빌드에_사용할_네트워크_ID
|
||||||
|
export OS_FLOATING_IP_POOL=플로팅_IP_풀_이름
|
||||||
|
```
|
||||||
|
|
||||||
|
위 환경 변수들은 실제 환경에 맞게 수정해야 합니다. 예를 들어, `ADMIN_PASSWORD`는 OpenStack 관리자의 비밀번호로 설정해야 하며, `OPENSTACK_KEYSTONE_HOST`는 OpenStack Keystone 서비스의 호스트 주소로 설정해야 합니다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source admin-openrc
|
||||||
|
```
|
||||||
|
|
||||||
|
packer 를 실행할 수 있는지 확인합니다.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
packer validate packer-openstack-ubuntu.json
|
||||||
|
```
|
||||||
|
|
||||||
|
### Packer OpenStack 템플릿 실행
|
||||||
|
|
||||||
|
```bash
|
||||||
|
packer build packer-openstack-ubuntu.json
|
||||||
|
```
|
||||||
|
|||||||
11
admin-openrc.sample
Normal file
11
admin-openrc.sample
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
export OS_USER_DOMAIN_NAME=Default
|
||||||
|
export OS_PROJECT_NAME=admin
|
||||||
|
export OS_TENANT_NAME=$OS_PROJECT_NAME
|
||||||
|
export OS_USERNAME=admin
|
||||||
|
export OS_PASSWORD=ADMIN_PASSWORD
|
||||||
|
export OS_AUTH_URL=http://OPENSTACK_KEYSTONE_HOST/v3
|
||||||
|
export OS_IDENTITY_API_VERSION=3
|
||||||
|
export OS_IMAGE_API_VERSION=2
|
||||||
|
export OS_SOURCE_IMAGE_ID=원본_이미지_ID
|
||||||
|
export OS_NETWORK_NAME=이미지_빌드에_사용할_네트워크_ID
|
||||||
|
export OS_FLOATING_IP_POOL=플로팅_IP_풀_이름
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
"source_image_id": "{{env `OS_SOURCE_IMAGE_ID`}}",
|
"source_image_id": "{{env `OS_SOURCE_IMAGE_ID`}}",
|
||||||
"flavor_name": "cpu.2c_2g",
|
"flavor_name": "cpu.2c_2g",
|
||||||
"network_name": "{{env `OS_NETWORK_NAME`}}",
|
"network_name": "{{env `OS_NETWORK_NAME`}}",
|
||||||
"image_name": "ubuntu 22.04-{{timestamp}} server",
|
"image_name": "ubuntu 24.04 server-{{timestamp}}",
|
||||||
"floating_ip_pool": "{{env `OS_FLOATING_IP_POOL`}}",
|
"floating_ip_pool": "{{env `OS_FLOATING_IP_POOL`}}",
|
||||||
"ssh_username": "ubuntu"
|
"ssh_username": "ubuntu"
|
||||||
},
|
},
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
"use_floating_ip": true,
|
"use_floating_ip": true,
|
||||||
"ssh_timeout": "10m",
|
"ssh_timeout": "10m",
|
||||||
"image_disk_format": "raw",
|
"image_disk_format": "raw",
|
||||||
|
"image_visibility": "public",
|
||||||
"use_blockstorage_volume": true
|
"use_blockstorage_volume": true
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
write_files:
|
write_files:
|
||||||
- path: /tmp/pbr-script-cloud-init.sh
|
- path: /tmp/pbr-script-cloud-init.sh
|
||||||
permissions: '0755'
|
permissions: "0755"
|
||||||
owner: root:root
|
owner: root:root
|
||||||
content: |
|
content: |
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# GitLab 스크립트 URL (공개 저장소 또는 접근 가능한 URL)
|
# GitLab 스크립트 URL (공개 저장소 또는 접근 가능한 URL)
|
||||||
# 예시: GitLab Pages, Raw 파일 URL 등
|
# 예시: GitLab Pages, Raw 파일 URL 등
|
||||||
# private repository인 경우 인증 관련 부분을 추가해야 합니다. (아래 설명)
|
# private repository인 경우 인증 관련 부분을 추가해야 합니다. (아래 설명)
|
||||||
@@ -15,7 +15,7 @@ write_files:
|
|||||||
|
|
||||||
# 스크립트 저장될 디렉토리 생성 (필요하다면)
|
# 스크립트 저장될 디렉토리 생성 (필요하다면)
|
||||||
mkdir -p $(dirname "${DEST_PATH}")
|
mkdir -p $(dirname "${DEST_PATH}")
|
||||||
|
|
||||||
echo "Downloading script from ${SCRIPT_URL}..."
|
echo "Downloading script from ${SCRIPT_URL}..."
|
||||||
# wget 또는 curl 사용
|
# wget 또는 curl 사용
|
||||||
# wget이 일반적으로 더 많이 사용됨
|
# wget이 일반적으로 더 많이 사용됨
|
||||||
@@ -29,17 +29,17 @@ write_files:
|
|||||||
echo "Error: Neither wget nor curl found. Cannot download script."
|
echo "Error: Neither wget nor curl found. Cannot download script."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
echo "Script downloaded successfully to ${DEST_PATH}. Executing..."
|
echo "Script downloaded successfully to ${DEST_PATH}. Executing..."
|
||||||
chmod +x "${DEST_PATH}" # 실행 권한 부여
|
chmod +x "${DEST_PATH}" # 실행 권한 부여
|
||||||
"${DEST_PATH}" install # 스크립트 실행
|
"${DEST_PATH}" setup --force # 스크립트 실행
|
||||||
else
|
else
|
||||||
echo "Error: Failed to download script from ${SCRIPT_URL}."
|
echo "Error: Failed to download script from ${SCRIPT_URL}."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Script execution finished."
|
echo "Script execution finished."
|
||||||
|
|
||||||
runcmd:
|
runcmd:
|
||||||
- /tmp/pbr-script-cloud-init.sh
|
- /tmp/pbr-script-cloud-init.sh
|
||||||
|
|||||||
Reference in New Issue
Block a user