Cloud Assembly 설계 예제에서는 최소한의 WordPress 리소스만 포함된(예: 애플리케이션 서버 1개만 포함) 클라우드 템플릿으로 작업을 시작합니다.
Cloud Assembly는 인프라를 코드로 구현하는 도구입니다. 먼저 설계 캔버스로 리소스를 끌어 와서 작업을 시작합니다. 그런 다음 캔버스의 오른쪽에 있는 코드 편집기를 사용하여 세부 정보를 완성합니다.
코드 편집기를 사용하면 코드를 직접 입력하고, 잘라내고, 붙여 넣을 수 있습니다. 코드 편집이 불편하면 캔버스에서 리소스를 선택하고 코드 편집기 속성 탭을 클릭한 다음 그 곳에 값을 입력하면 됩니다. 입력한 값이 마치 직접 입력한 것처럼 코드에 나타납니다.
프로시저
예: 완료된 기본 클라우드 템플릿 코드 예제
formatVersion: 1 inputs: env: type: string enum: - env:dev - env:prod - env:test default: env:dev title: Environment description: Target Environment size: type: string enum: - small - medium - large description: Size of Nodes title: Tier Machine Size username: type: string minLength: 4 maxLength: 20 pattern: '[a-z]+' title: Database Username description: Database Username userpassword: type: string pattern: '[a-z0-9A-Z@#$]+' encrypted: true title: Database Password description: Database Password resources: WebTier: type: Cloud.Machine properties: name: wordpress image: ubuntu flavor: '${input.size}' constraints: - tag: '${input.env}' networks: - network: '${resource["WP-Network-Private"].id}' assignPublicIpAddress: true cloudConfig: | #cloud-config repo_update: true repo_upgrade: all packages: - apache2 - php - php-mysql - libapache2-mod-php - mysql-client - gcc - make - autoconf - libc-dev - pkg-config - libmcrypt-dev - php-pear - php-dev runcmd: - mkdir -p /var/www/html/mywordpresssite && cd /var/www/html && wget https://wordpress.org/latest.tar.gz && tar -xzf /var/www/html/latest.tar.gz -C /var/www/html/mywordpresssite --strip-components 1 - i=0; while [ $i -le 10 ]; do mysql --connect-timeout=3 -h ${DBTier.networks[0].address} -u root -pmysqlpassword -e "SHOW STATUS;" && break || sleep 15; i=$((i+1)); done - mysql -u root -pmysqlpassword -h ${DBTier.networks[0].address} -e "create database wordpress_blog;" - mv /var/www/html/mywordpresssite/wp-config-sample.php /var/www/html/mywordpresssite/wp-config.php - pecl channel-update pecl.php.net - pecl update-channels - pecl install mcrypt - sed -i -e s/"define( 'DB_NAME', 'database_name_here' );"/"define( 'DB_NAME', 'wordpress_blog' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_USER', 'username_here' );"/"define( 'DB_USER', 'root' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_PASSWORD', 'password_here' );"/"define( 'DB_PASSWORD', 'mysqlpassword' );"/ /var/www/html/mywordpresssite/wp-config.php && sed -i -e s/"define( 'DB_HOST', 'localhost' );"/"define( 'DB_HOST', '${DBTier.networks[0].address}' );"/ /var/www/html/mywordpresssite/wp-config.php - sed -i '950i extension=mcrypt.so' /etc/php/7.4/apache2/php.ini - service apache2 reload DBTier: type: Cloud.Machine properties: name: mysql image: ubuntu flavor: '${input.size}' constraints: - tag: '${input.env}' networks: - network: '${resource["WP-Network-Private"].id}' assignPublicIpAddress: true remoteAccess: authentication: usernamePassword username: '${input.username}' password: '${input.userpassword}' cloudConfig: | #cloud-config repo_update: true repo_upgrade: all packages: - mysql-server runcmd: - sed -e '/bind-address/ s/^#*/#/' -i /etc/mysql/mysql.conf.d/mysqld.cnf - service mysql restart - mysql -e "CREATE USER 'root'@'%' IDENTIFIED BY 'mysqlpassword';" - mysql -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';" - mysql -e "FLUSH PRIVILEGES;" attachedDisks: [] WP-Network-Private: type: Cloud.Network properties: name: WP-Network-Private networkType: existing
다음에 수행할 작업
구문을 검사하고 배포하여 클라우드 템플릿을 테스트합니다.