 My name is Colleen Murphy. I work on the forage modules team at Puppet Labs I help contribute to the stack forage puppet modules and Which are community maintain and then I'm in the primary maintainer for the puppet labs open stack module Which wraps all the stack forage modules? So can I see for to start off who's ever used puppet? Okay, who is currently using puppet? Okay Is there anyone who's never used puppet? Okay, great. So for those of you who haven't ever used puppet puppet is a configuration management tool So what it excels at is describing the desired state of a single node in an abstract language So that means I can describe what packages I want installed what the configuration files for those packages are going to look like How the services are going to be running that kind of thing So one of the biggest strengths that puppet has is that it promotes this Modular approach to describing these services and we have a puppet forage which Which is where the community can publish their puppet modules I mean kind of a similar manner to assist the packages or gems or Python libraries For open stack we have a single module for each open stack service We have the nova module and the cinder module and the neutron module and that kind of thing So for this demo if I can get the video to run Sorry, excuse me. All right. Apologize for that So for this time we're going to be using puppet Enterprise 3 7 which is scheduled to be released in a few days and we're going to be using sent os 7 for our nodes and And It's important to note that this is kind of a preview. We don't have yet official Juno releases for these puppet modules So if you want a official stable release you can download the ice house versions of these modules from the puppet forage If you want to start playing with Juno, you can get these all from github Think this is going sorry, this doesn't really want to okay Sorry for the delay So we're using puppet Enterprise 3 7. We're going to set up eight nodes in this open stack cluster See So again, like I was saying it's these are kind of in work in progress mode These aren't officially yet. These are still considered unstable But the pub labs open stack module provides you with a puppet file And you can use a tool like our 10k to automatically install all of the stack forage modules that you'll need for this After you've installed all these modules The and I apologize for the font size. It's a little bit small But after you've installed all these modules, you're going to want to configure your higher data To give to these modules because there is a lot of data that goes into these modules that are going to be specific to your environment So what what happened there was There was an example higher data file that comes with the public labs open stack module I went ahead and copied that into my higher data directory, which is where your higher data lives And then you can start changing the values to fit your configuration. So I Have some some nets and IP addresses that new neutron is going to use I have some static IP addresses for the controller node and the storage node I have credentials for the database and the rabbit MQ server I have some default keystone users that are going to be set up and I have credentials for all the service users That are going to be set up in keystone so all this data gets Gets put into Hyra and we also in this deployment. I've just on using in this deployment I Have special Hyra files for our Swift nodes and those are going to define a zone for each node It's a little hard to see but that says the zone is going to be number one and for our other zones Are there swift nodes the zone would be two or three or so on? And that way later when we get to assigning roles in the console Defining these data values is going to be a breeze and then once we've After we've added these higher data values will need to Change our opens or change our Hyra configuration a little bit and we'll need to restart the puppet master for this I'm using the yaml back end for Hyra because that's the simplest But you can use any data store that you want for your Hyra back end So now we have that kind of set up now. We can actually start assigning roles to our nodes so Puppet Enterprise 3 7 provides a new node manager that can be used to classify nodes based on properties of the nodes So we do that in the classification There it goes So we're going to assign or we're going to create groups for each type of node So the controller node is going to get to the controller group, etc Okay, so in this demo we're going to create the open stack controller group We're going to add the group click on the group to edit it And then we're going to assign nodes to it in my case. I'm going to use the hosting fact To assign the controller node To this group You can see that this is going to match one node in our infrastructure We're going to add the rule and then we're going to assign a role to it In this case, it's going to be the open stack role controller class which provides this role and So this role plus the higher data. We already configured is enough to get our control node going One thing I forgot to mention I think is that these nodes need to be set up in a specific order. So you need the control node with its database The database the rabbit MQ server and all the identity services you need that set up before you can start installing all the other nodes So that's where our live management comes in we can Head to live head to live management and select just the control node and kick off a public run just for this particular node Not through the console Anyways, we can check on the progress of the controller node front by tailing the logs And this will take about 15 minutes to run. So it's installing the my sequel server. It's installing the rabbit MQ server setting up identity services and salameter and heat and horizon and Then we can once that's all configured. We can start following the same process for the other nodes some so we can create a group We can add rules for this group and then we can assign a role to this particular group So we have the compute group which gets the compute role the network group gets the network role The block storage group is going to get the block storage roll so on and then once we get to the swift nodes for the object storage We have three nodes in our infrastructure that are meant to be swift nodes and we can all we can add them all to the same group So again, we're going to classify these by the host name because they'll often happen to be Swift store zero one zero two zero three in our case This is going to match three nodes in this infrastructure And we're going to assign this swift storage role to this group and You will notice that This role has a parameter that you can assign to it the zone role and we could we could via the console assign zones to each node, but we've already taken care of that and hire us so we don't We don't need to do those individually via the console And then we can go back to live management We can select all of our open stack nodes except for the control node and we can kick off another puppet run for all these nodes and Again, we can follow the progress by tailing the logs if we wanted to these will take about five minutes or so to configure So now the Swift module uses exported resources Which means that we need puppet DB in order to manage these resources and share them in between nodes Puppet enterprise comes with puppet DB installed So all that means for us is that we need to kick off one more one more puppet run on the controller nodes so that it can Collect all the exported resources from the Swift node. So we're back in my live management. We're going to select just a control node and Kick off another run and it is creating all these Rings for us now So now the rest of this demo is just going through and checking out our open stack and checking that everything works So we can go to horizon which is living on our controller puppet has created a test user for us So I can log in as that This is the open stack Juno dashboard Puppets created some other resources for us By default just to test it out so we can check out in our network topology puppets created the public and private networks for us and In our images we can see that puppets already added a small test image for us We've got the siras image and we can use that to boot our first instance So we can launch an instance We can give it a name and we can tell it to boot from that image and Add it to the private network and launch it That'll take a few minutes once that's booted Once that's booted we can log into the image with the VNC console and the browser and We can just use the default siras user for this test image So we can also test out that our sender installation works so we can head over to the volumes tab and We can create a new volume We can configure our volume that'll take it also take another few minutes to create and We can attach it to our new instance under actions we edit attachments and Select our test instance And you can see it notified us that we have a new volume dev at VDB so we can go back to our test instance. We can Check it out. You can see that the new device is there And we can do whatever we do with block storage devices. We can make a file system We can mount it. We could unmount it. We could mount it on a different instance another thing we get from this module is We have heat configured for us so we can actually launch a stack from heat in this demo. I'm using one of the Example templates from the heat templates repository you can get that just directly from the web and Configure all the parameters for this template and We can click on our stack and we can see our new topology for the stack and we can go to our instances list and see that this Heat stack has created some new new instances for us So one of the last things to show off is we have Object storage setup. So we have these three zones We can create a container and we can upload objects to the container and Then we can check out salameter as well. We can See that in action in the resource usage usage tab. So for example, we can check out our CPU usage for the last few minutes Yes, so that was an example of how you can set up open stack with puppet enterprise the Stack forage modules are developed by this puppet open stack community on stack forage The puppet labs open stack module is a puppet labs maintained Repository on github you can download the stable version of puppet labs open stack from the puppet from the puppet forage Which is the ice house version and if you want to start playing with the Juno version You can test you can find that on github And at this point I'm ready to answer any questions you have. I apologize for some of the technical difficulties that I had there Yes Can you repeat your question? Right now they're configured to use either Either my sequel or Maria depending on your on your on your system Or you can figure it to use postgres. I don't know if you can configure it to use Galera But I don't think it would be that much that difficult to set that up What other questions do you have? Yes Say that again. I'm sorry. I can't hear you High availability. Okay, so that is a that is currently not available with this puppet labs open stack module That is on the roadmap for the puppet open stack community. We definitely expect that to be available by kilo Yes Yes, so you can use the site that PP file which is just a manifest in your In your puppet directory And that just is a file that describes it So that's maybe a little bit easier in some cases you can also use a different node classifier if you wanted to And I believe the puppet enterprise has a API that you can use as well So you can use that to script it. I have one more minute left. Are there any other questions? All right. Thank you very much