No results found
We couldn't find anything using that term, please try searching for something else.
In this Cloud Assembly design example, you start with a cloud template that contains only minimal WordPress resources, such as having only one applica
In this Cloud Assembly design example, you start with a cloud template that contains only minimal WordPress resources, such as having only one application server.
Cloud Assembly is an infrastructure-as-code tool.You drag resources to the design canvas to get started.Then, you complete the details using the code editor to the right of the canvas.
The code editor allows you to type, cut, and paste code directly.If you’re uncomfortable editing code, you can select a resource in the canvas, click the code editor property tab, and enter values there.Values that you enter appear in the code as if you had typed them directly.
The machines serve as WordPress application server (WebTier) and MySQL database server (dbtier).
resources: WebTier: type : Cloud . machine property : name: wordpress image: ubuntu flavor: small constraint : - tag : env : dev dbtier: type: Cloud.Machine properties: name: mysql image: ubuntu flavor: small constraint : - tag : env : dev
WP-Network-Private: type : Cloud . network property : name: WP-Network-Private networkType: existing
In thecanvas, hover over the network block, click and hold the bubble where the line touches the block, drag to a machine block, and release.
When you create the connection lines, note that network code is automatically added to the machines in the editor.
In some places, the example infrastructure was set up for multiple options.For example:
You might set a specific option directly in the cloud template, but a better approach is to let the user select the option at template deployment time.Prompting for user input lets you create one template that can be deployed many ways, instead of having many hard-coded templates.
inputs
section in the code so that users can select machine size and target environment at deployment time.Define the selectable values:
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
resources
section is add of the code , add${input.}
code to prompt for the user selection:
resources: WebTier: type : Cloud . machine property : name: wordpress image: ubuntu flavor : ' $ { input.size } ' constraint : -tag : ' $ { input.env } ' networks: - network: '${resource["WP-Network-Private"].id}' dbtier: type: Cloud.Machine properties: name: mysql image: ubuntu flavor : ' $ { input.size } ' constraint : -tag : ' $ { input.env } ' networks: - network: '${resource["WP-Network-Private"].id}' WP-Network-Private: type : Cloud . network property : name: WP-Network-Private networkType: existing
WebTier
and dbtier
code using the following examples.The WP-Network-Private
code does not need additional changes.
Note that the enhancements include login access to the database server and deployment-time cloudConfig initialization scripts.
Component | Example |
---|---|
Additional dbtier Inputs |
username : type : string minlength : 4 maxlength : 20 pattern : ' [ a - z]+ ' title : Database Username description : database username userpassword : type : string pattern : ' [ a - z0 - 9A - Z@#$]+ ' encrypt : true title : Database Password description : Database Password |
dbtier Resource |
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: [] |
WebTier Resource |
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 |
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@#$]+ ' encrypt : 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
Test the cloud template by checking the syntax and deploying it.