Deploying our new applications uses the same commands as before. We'll use puppet app show to provide a list of nodes with ordering. You'll see that our single DB produces a database; each webapp uses that database and produces an HTTP service resource, which is finally consumed by each load balancer:
[root@pe-puppet-master manifests]# puppet app show
Myapp[myapp]
Myapp::Db[myapp] => mysql
+ produces Database[db-myapp]
Myapp::Web[myapp-1] => appserver
+ produces Http[web-myapp-1]
consumes Database[db-myapp]
Myapp::Web[myapp-2] => appserver2
+ produces Http[web-myapp-2]
consumes Database[db-myapp]
Myapp::Lb[myapp-1] => haproxy
consumes Http[web-myapp-1]
consumes Http[web-myapp-2]
Myapp::Lb[myapp-2] => haproxy2
consumes Http[web-myapp-1]
consumes Http[web-myapp-2]
Before we launch our application, we can run a puppet job plan to get an idea of what ordering will look like during our run:
[root@pe-puppet-master manifests]# puppet job plan --application Myapp --environment production
+-------------------+------------+
| Environment | production |
| Target | Myapp |
| Concurrency Limit | None |
| Nodes | 5 |
+-------------------+------------+
Application instances: 1
- Myapp[myapp]
Node run order (nodes in level 0 run before their dependent nodes in level 1, etc.):
0 -----------------------------------------------------------------------
mysql
Myapp[myapp] - Myapp::Db[myapp]
1 -----------------------------------------------------------------------
wordpress
Myapp[myapp] - Myapp::Web[myapp-1]
wordpress2
Myapp[myapp] - Myapp::Web[myapp-2]
2 -----------------------------------------------------------------------
haproxy
Myapp[myapp] - Myapp::Lb[myapp-1]
haproxy2
Myapp[myapp] - Myapp::Lb[myapp-2]
Use `puppet job run --application 'Myapp' --environment production` to create and run a job like this
Finally, we run our application and see MySQL configured first, then our wordpress instances, followed by the load balancers. Thanks to the service resources provided by puppetlabs/app_modeling, we also know that our database is actively seen before the wordpress servers, and that our wordpress servers are producing 302 status codes prior to the load balancers being configured:
[root@pe-puppet-master production]# puppet job run --application Myapp --environment production --verbose
Starting deployment ...
+-------------------+------------+
| Job ID | 42 |
| Environment | production |
| Target | Myapp |
| Concurrency Limit | None |
| Nodes | 5 |
+-------------------+------------+
Application instances: 1
- Myapp[myapp]
Node run order (nodes in level 0 run before their dependent nodes in level 1, etc.):
0 -----------------------------------------------------------------------
mysql
Myapp[myapp] - Myapp::Db[myapp]
1 -----------------------------------------------------------------------
wordpress
Myapp[myapp] - Myapp::Web[myapp-1]
wordpress-2
Myapp[myapp] - Myapp::Web[myapp-2]
2 -----------------------------------------------------------------------
haproxy
Myapp[myapp] - Myapp::Lb[myapp-1]
haproxy-2
Myapp[myapp] - Myapp::Lb[myapp-2]
New job created: 42
Started puppet run on mysql ...
Finished puppet run on mysql - Success!
Resource events: 0 failed 9 changed 27 unchanged 0 skipped 0 noop
Report: https://pe-puppet-master/#/run/jobs/42/nodes/mysql/report
Started puppet run on wordpress-2 ...
Started puppet run on wordpress ...
Finished puppet run on wordpress-2 - Success!
Resource events: 0 failed 81 changed 66 unchanged 0 skipped 0 noop
Report: https://pe-puppet-master/#/run/jobs/42/nodes/wordpress-2/report
Finished puppet run on wordpress - Success!
Resource events: 0 failed 81 changed 66 unchanged 0 skipped 0 noop
Report: https://pe-puppet-master/#/run/jobs/42/nodes/wordpress/report
Started puppet run on haproxy-2 ...
Started puppet run on haproxy ...
Finished puppet run on haproxy - Success!
Resource events: 0 failed 4 changed 30 unchanged 0 skipped 0 noop
Report: https://pe-puppet-master/#/run/jobs/42/nodes/haproxy/report
Finished puppet run on haproxy-2 - Success!
Resource events: 0 failed 4 changed 30 unchanged 0 skipped 0 noop
Report: https://pe-puppet-master/#/run/jobs/42/nodes/haproxy-2/report
Success! 5/5 runs succeeded.
Duration: 58 sec