1. Heat
- 하나의 스택을 만든다 라고 한다.
- 하나 이상의 리소스가 쌓여있는것을 stack이라고 한다.
- 리소스는 openstack의 리소스와 거의 같다.
- heat orchestration template(HOT)을 작성해야한다.
- HOT은 YAML Syntax를 사용한다.
- xml, 확장자가 .json인 파일 등은 사람이 작성하거나 읽기 좋은 형태는 아니다. 컴퓨터는 좋겠지만
- yaml은 사람이 읽거나 작성하기 쉽게 하려고 만든 포맷
- yaml은 괄호나 따옴표를 쓰지 않는다.
2. YAML
- Scalar(word/String)
- korea
- I am sue
- yaml에서는 라인 전체가 하나의 scalar이다.
- 문장에서 따옴표를 붙일 필요가 없다.
- Hash/Dictionary
- scalar: scalar
- 어떤 scalar에 어떤 scalar를 넣는다.
- 변수 느낌
- age: 30
gender: man - 변수가 되는 scalar에는 : 가 붙어야하고 값에 해당하는 scalar는 앞을 띄어줘야한다.
- Array/List/Sequence
- - scalar1
- - scalar2
- - scalar3
- 순서를 정하고 싶을때는 -를 붙인다. 붙이고 한칸 띄어준다.
- - age: 30
- Hirachy
- a
b
c
d
e
f
g - 위와같이 들여쓰기(일반적으로 두칸)를 사용해서 하위를 지정한다.
- tap은 사용하면 안된다.
- tap은 공백으로 인식하지 않는다.
- 반드시 sapcebar 사용.
- a
- 부가설명
- - a:
100
200
300 - 리스트 안에 해쉬가 들어있고 multi vaule가 있다.
- 리스트 안에 해쉬
- a:
- 100
- 200
- 300 - a라고 하는 해쉬에 multi value가 들어있다 list로 되어있는.
- 해쉬 안에 리스트
- - a:
- 확장자
- .yaml
- .yml
3. Stack을 사용하여 wordpress 구축
- 필요한것
- template file
- environmet file
- template file
heat_template_version: 2013-05-23
description: >
Heat Orchestration Template
to deploy instance
with existing network
and floating ip.
parameters:
key_name:
type: string
description: Name of keypair to assign to servers
image:
type: string
description: Name of image to use for servers
flavor:
type: string
description: Flavor to use for servers
public_net_id:
type: string
description: >
ID of public network for which floating IP addresses will be allocated
private_net_id:
type: string
description: ID of private network into which servers get deployed
private_subnet_id:
type: string
description: ID of private sub network into which servers get deployed
resources:
server:
type: OS::Nova::Server
properties:
name: Server
image: { get_param: image }
flavor: { get_param: flavor }
key_name: { get_param: key_name }
networks:
- port: { get_resource: server_port }
user_data: |
#!/bin/bash
yum -y install http://ftp.riken.jp/Linux/remi/enterprise/remi-release-7.rpm
yum-config-manager --disable remi-safe
yum-config-manager --enable remi-php74
cat << EOF >> /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
yum-config-manager --enable mariadb
yum install -y httpd php php-mysqlnd MariaDB-server MariaDB-client
systemctl start mariadb
mysql -u root -e 'CREATE DATABASE wordpress_db'
mysql -u root -e "CREATE USER 'wp-admin'@'localhost' IDENTIFIED BY 'dkagh1.'"
mysql -u root -e "GRANT ALL PRIVILEGES ON wordpress_db.* to 'wp-admin'@'localhost' IDENTIFIED BY 'dkagh1.'"
mysql -u root -e "FLUSH PRIVILEGES"
curl -o latest.tar.gz https://wordpress.org/latest.tar.gz
tar zxf latest.tar.gz
cp -r wordpress/* /var/www/html
setfacl -Rm u:apache:rwX /var/www/html
cp /var/www/html/wordpress/wp-config-sample.php /var/www/html/wordpress/wp-config.php
sed -i '23s/database_name_here/wordpress_db/g' wp-config.php
sed -i '26s/username_here/wp-admin/g' wp-config.php
sed -i '29s/password_here/dkagh1./g' wp-config.php
systemctl start httpd
systemctl enable httpd
server_port:
type: OS::Neutron::Port
properties:
network_id: { get_param: private_net_id }
fixed_ips:
- subnet_id: { get_param: private_subnet_id }
security_groups: [{ get_resource: server_security_group }]
server_floating_ip:
type: OS::Neutron::FloatingIP
properties:
floating_network_id: { get_param: public_net_id }
port_id: { get_resource: server_port }
server_security_group:
type: OS::Neutron::SecurityGroup
properties:
description: Add security group rules for server
name: security-group
rules:
- remote_ip_prefix: 0.0.0.0/0
protocol: tcp
port_range_min: 22
port_range_max: 22
- remote_ip_prefix: 0.0.0.0/0
protocol: icmp
- remote_ip_prefix: 0.0.0.0/0
protocol: tcp
port_range_min: 80
port_range_max: 80
outputs:
server_private_ip:
description: IP address of server in private network
value: { get_attr: [ server, first_address ] }
server_public_ip:
description: Floating IP address of server in public network
value: { get_attr: [ server_floating_ip, floating_ip_address ] }
- multi value → >
- command → |
- 이 파일에서 '-'는 string으로 인식이 안되므로 오류가 생긴다.
- 그렇기 때문에 환경파일에서 parameters의 값만 수정해서 제공한다.
3. environment file
parameters:
key_name: test-key
image: centos7
flavor: wordpress
public_net_id: ext-net
private_net_id: test-net
private_subnet_id: test-subnet
4. Launch Stack
- rollback 체크 → 하나가 실패하면 그 전에 만들어놓은걸 삭제
- 하나 안되서 새로 해야겠다 → rollback 체크
- 하나 안되는거 그것만 고치겠다 → rollback 체크 안함.
5. ------
- 처음에 public key를 찾을수없다는 오류가 뜬다 → 당연 → private key 알아서 끌어온다.
- echo $? -> 전에 실행한 프로세스의 리턴코드를 출력(exit code) 0->정상 종료 나머지는 오류
'Infra > 프라이빗 클라우드 인프라' 카테고리의 다른 글
Image 생성 (diskimage-builder) (0) | 2020.07.07 |
---|---|
Image 생성 (Snapshot) (0) | 2020.07.07 |
Open Stack - Cloud-init (wordpress) (0) | 2020.07.02 |
Open Stack 운영.3 (user) (0) | 2020.07.02 |
Open Stack 운영.2(user) (0) | 2020.07.01 |
댓글