The participants of the senior executive course 45 present, good afternoon everyone. Thank you very much. Distinguished guests, ladies and gentlemen. Let me say before I begin that I very strongly believe in the National Institute for Policy and Strategic Studies. And I believe strongly in its capacity to be in the coming years and months the leading thought leader for Africa in policy matters, for Africa not just for Nigeria but for Africa. And I think that we have everything course after course and as has been pointed out, I've been coming here since 2015 and course after course, participants after participants. I'm completely overwhelmed by the quality of individuals, the quality of personnel who come here and who are trained in policy issues and who eventually go out there to influence policy one way or the other. So I hope that the 45 course participants will join in this very noble and this noble company. Thank you all very much. My topic is I believe has been displayed. It is creating a homeland for all, nation building in a diverse democracy. And I want to just emphasize that the focus of my lecture will be on what I say diversity. I'm referring in particular to ethnic and religious diversity and to see how it is that we can truly build a nation despite our ethnic and religious diversities. Let me begin with a personal story of an encounter that I had many years ago. In 1989 I was about to get married and I was searching for a good place to rent, a good house to rent. I met my landlord to be who happened to be an elderly lawyer who obviously did more real estate than legal practice. I mean he was mainly just a business of real estate. So when I met him he let me know that there were three categories of people that he would not rent his property to. Of course he didn't know who I was. And the three categories of people that he would not rent his properties to were ebos, egebos and lawyers. Ebos, egebos and lawyers, he made me very clear to me I was disqualified on two accounts. He then said to me pointing behind him at a few shriveled looking books in a small bookshelf behind him that he had the arsenal to destroy any tenant in court if I gave him any trouble. He later on of course discovered to his embarrassment that I was a law teacher and at the time advisor to the then attorney general of the federation and of course that I am also Ijebu. I've shared this story to illustrative point that I think is hugely important which is that prejudice and bias are natural aspects of human nature. Everyone has prejudices and preferences that are enforced by stories and narratives that they hear. Prejudice is a function of environment in which one is socialized and the level of exposure that one has. All across this country different ethnicities are subjects of popular stereotypes whether it is the notion that Ijebos are stingy or that egebos have an excessive love for money or that the full anise are cunning, unforgiving or more recently violent or that the ebira and the hika are practitioners of seasoned witchcraft. These are stereotypes and they of course by the very nature of stereotypes while generalizations most likely to be false and unlikely to hold up to any kind of empirical tests but they are the narratives people have woven about other tribes and in fact people of other religions. Sometimes these stories are repeated so many times that they are soon accepted as facts and when we accept these stories as facts about other people and people of other ethnicities and people of other religions who we have never met with or interacted with they shape our judgments about them even before they have spoken. In other words we prejudge them. This is the nature and power of prejudice. This is how entrenched biases and prejudices come to be and become established. However when ethnic or religious prejudices are weaponized for political purposes we are confronted with a lethal potentially destructive situations. Elections for example by the very nature tend to be already divisive. Partisan democratic competition compels us to align ourselves with the camps that most reflect our ideals and aspirations. In a diverse society such as ours democratic competition is intensified by the socio-cultural privileges that exist in society. This is true of any heterogeneous society or democracy. In an election cycle in which the major contenders come from different ethno-regional classes or zooms there was always a sense that the competition was going to be particularly intense but at the same time it would not be accurate to reduce the election to an ethnic census. As we saw the contenders perform strongly in parts of the country other than their native regions. Unfortunately one of the unsavory tendencies that was witnessed in this election cycle has been so in previous ones but perhaps hited somewhat was the weaponization of ethnic religious and sectional prejudices in ways that are damaging to social cohesion. Religion was quite clearly made an issue and in some parts of the country political biases are introduced even between denominations of the same religion. In some cases ethnic profiling took place at polling booths There's a popular female food blogger and YouTuber YouTuber called C.C.Yemi a Yoruba woman who took to her verified Twitter handle to say and I quote my husband and I were not allowed to vote they said we look like Igwa people I can't believe this almost without fail in every election cycle politicians are forcefully either overtly or covertly sought to persuade voters that voting for their particular candidate or the particular political party they favor is the will of God and that voting for the opposing party was a violation of the divine will. Repeatedly we hear of prophets who support political parties one way or the other this is a matter of great concern because long after an election is over and long after the leading contenders have sheathed their thoughts the rhetoric, the words and the means used to compete can have adverse long term effects on society where the forces of primordial division and polarization are harnessed for the sake of electoral gain the venom of such devices remain and continue to poison communal relations setting neighbors against neighbors and we have witnessed the catastrophic consequences of the political weaponization of prejudice and bias in places such as Rwanda no one could have believed that in a small country with two ethnic groups the Hutus and the Tutsis who speak the same language that ethnic sentiments will be exploited to the extent that it said both groups against each other led to the Rwandan genocide in which one million people died in that conflict people who had lived together side by side for years were set upon by their own neighbors and murdered the most gruesome fasha even in our own history as a people there are ample milestones that serve as a warning against indulging in bigotry and prejudice some of the political rhetoric prepared and the cause of this election cycle have been disturbing because they recall similar rhetoric used by politicians during some of the darkest chapters of our country's existence in the first republic the exploitation of prejudice and incitement of hatred against ethnic communities led to the collapse of that democratic dispensation led to bloody pogroms and a civil war that cost in excess of two million lives we talk about the civil war but we seem to ignore the fact that it was the manipulation of ethno-religion sentiment that eventually boiled over into that tragedy the demons released by that bloody conflict amongst brothers are yet to be fully caged and we pay the price of that healing process every day that is not a chapter of our history that we should ever allow to repeat itself the Rwandis took deliberate steps to ensure that the tragedy they experienced would never be repeated including even a memorial to the dead but more importantly the strict enforcement of laws against the use of ethnically or religiously charged rhetoric and a raft of laws that criminalize divisive attitudes and behavior we also must do the hard work of providing and implementing a framework for fair, just and unifying dealings amongst our peoples we must also create a framework and that enables us to be able to enforce strictly the laws against the use of divisive rhetoric especially ethnically bigoted religiously bigoted rhetoric let me be clear people do not suddenly start hating each other during elections while political actors may invoke ethnic or sectional sentiments in an election these social and cultural antipathies already exist lurking beneath the surface and as we reflect on the takeaways from the last election cycle going forward we must consider the prevalence of day to day discrimination that occur we must consider the various forms of bigotry and prejudice that are not only present in our politics but are transmitted and effectively mainstreamed by the media and other social forces the association of whole ethnic communities with certain types of criminality which amounts to wholesale criminalization of an identity and the habit but in groups where the misdeeds of individuals are deeply problematic if we normalize these attitudes and habits it should not surprise us that they come to the fore during a heated electoral campaign and I must say just for emphasis that when a group of people or when individuals no matter how many they may be do certain things it is so easy for us to simply criminalize an entire tribe of people because of the actions of a few and we have done this kind of profiling in so many different ways such that if you ask anyone who is doing this you will say oh is people of this tribe who is doing that is people of that tribe but the vast majority of the people of that tribe do not even know that such things exist so these kinds of ethnic profiling is dangerous and it has to be contained and it has been contained in other places and I'm sure that part of what you part of the policies that I hope will develop from here will be studying these other societies that have been able to contain ethnic profiling in the way that it is done in the way that is so destructive to our communities but believe it or not Nigeria is changing there are no longer any homogenous enclaves in Nigeria as our own nations have evolved one of the most designable changes that were witnessed is the disappearance of ethnically homogenous spaces everywhere across the country people from diverse ethnic and religious backgrounds are schooling together doing business together commingling intermarrying and raising families are much talked about linguistic diversity is not a barrier as many Nigerians are multilingual increasingly we see that the heart and face of a new Nigeria is a social cultural hybrid appreciative of the cultural diversity of our society attuned to its culture but also blessed with an inclusive cosmopolitan outlook for many of these Nigerians young Nigerians in particular their ethnic and national identities are not in contradiction for young Nigerians who belong to the most globalized generation in our country's history this is especially true their friendships, their education their lived experiences have brought them into contact with the febrile variety of identities and cultures in their societies and on the planet and we see their multi-cultural outlook in the social networks in the entrepreneurial partnerships and their political activism which transcend the old primordial allegiances and we saw a lot of that in the politics of this particular election cycle a lot of the young people simply chose how they wanted to vote and many of them disregarded old primordial allegiances disregarded in many cases tribe it's not only intentional migration by the way that diversifies our communities over the past three decades conflicts and climatological events have also diversified for instance floods droughts have displaced large populations of our people driving them from their traditional homesteads in search of survival and safety and so they take refuge in safer communities they plant roots there and make those places their new homes and this is one of the engines of change that has become transformative for our communities and neighborhoods and there's really nothing intrinsically wrong with this because in any event this is how nations evolve all Nigerians are guaranteed the right to freedom of movement by the constitution however as human societies have evolved there was a realization that prosperity and progress lay in the widening cycle of inclusion and broadening of our definitions of sameness tribes have given way to nations and along with this new forms of socio-political organizations more expansive interpretations of kinship have emerged a common citizenship based on a cosmopolitan world view has become the standard for societies across the world discrimination against people on the basis of the identity is consistently condemned by most legal codes including our own constitution but there is still a tension that exists between this new Nigeria and the old Nigeria as understood by generation that is much more accustomed to political mobilization on the basis of identity but we must ennoble and validate the Nigeria that our young people are consciously or sometimes even unconsciously building this is the future that we want but as human beings it is natural to react to changes in the environment with some degree of anxiety for many Nigerians as we witness our communities become more diverse and more complex there are natural concerns about what this means for our own societies what this means for our own homes these elections witness the exploitation by political actors of the fears and anxieties of people about so called outsiders any attempt to deny people the right to vote in any locality on the basis that they do not belong in that place is condemnable in the strongest terms social integration is one of the highest ideals of our constitution we guarantees every citizen the right to traverse the length and breadth of this country without hindrance and to settle in any place of their choice it affirms the right of all Nigerians not to be discriminated against on the basis of their identity above all it holds up integration as a priority the framers of our constitution did not intend to create an apartheid system that distinguishes between natives and settlers but did they in fact create one they sought to create a civic nation so it is possible to conquer ethnic or religious prejudice and build a unified nation and I think that that in itself to be a rhetorical question can we truly conquer ethnic prejudices religious prejudices and build a unified nation I think we can but it is a journey and it's perhaps the most important issue in nation building indeed as humanity sought to build a more durable just and sustainable civilization we learned that our natural prejudices and our allied irredentist urges have to be disciplined and sublimated in a mutually rooted shared humanity we cannot we cannot without discipline some of the discipline comes from the force of law we simply have to discipline our natural urges there's a recognition that sociocultural diversity while being a fact of life is neither a weapon nor a weakness and the most prosperous places on the face of the earth are places that have learned to harness diversity while building even more inclusive institutions Singapore and Tanzania are countries that have gone far in conquering prejudice and had mentioned earlier Rwanda in Singapore, the statesman Likwanyu promoted policies aimed at establishing social cohesion in a racially and ethnically heterogeneous nation among such initiatives was the ethnic integration policy which sought to prevent the formation of ethnic conqueries and to promote the integration of ethnic groups it specified the proportion of flats that could be owned by the various ethnic groups and this created a much more balanced ethnic mix in the various housing estates that were built in Singapore Singapore made English the official language established legislative and policy safeguards to guarantee the rights of minorities and to ensure that government does not pass laws but overtly or covertly discriminate against any race or religion Likwanyu's government also entrenched meritocracy as its dominant public philosophy in 2019 the Gallup World Poor Singapore was rated top out of 124 countries for tolerance of ethnic minorities and 95% of respondents stated in that survey that for racial and ethnic minorities Singapore was a good place to live this was higher than the global average of 70% Tanzania is another example of a country that has been able to effectively manage its diversity its founding president Julius Nyerere wanted to avoid tribal prejudice that had plagued other African countries and implemented three measures he promoted an overarching national identity by establishing Kizwahili as national language second he promoted a Pan-Tanzanian history a deliberate writing of history which introduced into primary school curriculum we taught children to see themselves first and foremost as Tanzanians in doing this he was not attempting to erase ethnic identities but to ensure that ethnic prejudices did not blow up and he achieved this aim of making Tanzanian citizenship the primary way in which Tanzanians saw and identified themselves Nyerere was also a sincere preacher of national unity and coexistence I believe that Nigeria is neither unique nor exceptional on account of her diversity the genre of scholarship and public polemic that makes a problem of ethnicities and religions and characterizes it as a profound flaw is one that I differ strongly with I very strongly differ that merely because we are ethnic nations that came together or that we are from different religions for that reason it is necessarily a huge problem that is insomountable my diversity is neither a liability nor a curse it is in fact a blessing and an asset diversity deepens the pool of sociocultural capital available to us we are enriched by the frothy ferment of the vast multiplicity of perspectives which provide us with a treasure of tools for growth and progress and I have long maintained that in Nigeria what is that issue is not and has never been our diversity but our capacity to manage it with a sense of fairness, equity and justice there is no denying that diversity can be a harbinger of friction and we have seen it anyway so often it is natural as different groups on various backgrounds and with different world views mingled the interaction is characterized by degree of tension and even conflict all diverse nations find their unique ways of managing the tensions which inevitably arise from the co-mingling of an assortment of people and let me add that inclusion is essential to prosperity as we go forward this is another reason why divisive politics is completely counterproductive over the past five decades we have sustained a political economy in which our crude oil wealth extracted at considerable cost to the Niger Delta has been the fuel of economic and administrative life of our country in recent years it has become clear that we are now entering a post oil age whether we like it or not with all the developments in the world and all the talk about energy transition and all the talk about renewable energy whether we like it or not we are certainly entering a period when oil is going to be is going to grow in irrelevance our developmental and growth aspirations cannot be centered around the distribution of rents from oil we have realized what the advanced economies have long recognized in the 21st century the true wealth of nations is human capital and this means that places that have learned to attract and retain the most diverse pool of capital of skilled capital easily win the race for success diversity means a multiplicity of perspectives and worldviews a broad range of cultural, philosophical and philosophical and intellectual approaches for solving problems in this rich soil nourished by various ideas and schools of thought productive synthesis is possible and innovation flourishes the world's richest nations are those places that have learned to attract talent from various places and to harness diversity as a driver of growth in Nigeria this will also increasingly be the case a state's chances of growth will depend on how much qualitative capital it can attract and the richer the human capital pool as its disposal the more taxes it can harvest to fund governance and social services in this scenario the politics of division and tribalism will only breed poverty because it can only alienate the human capital that a state desperately needs for its growth it will become productive and destabilizing to exclude Nigerians from the political life of their communities on the basis of where they come from while simultaneously expecting them and requiring them to pay taxes taxation without representation is clearly a recipe for instability there are of course some issues that should focus all our commitments affirming the right of Nigerians to be free of all forms of discrimination it's not just a moral idea if we are truly committed to economic growth then we must also be committed to creating inclusive communities and strengthening social cohesion put another way the only thing that grows in a climate of tribal hatred is poverty this is why justice and healing and a stronger commitment to the ideals of integration are so important let me just very quickly return to the issue of elite responsibility leadership does not today a Nigerian leadership today does not have the luxury of toying with prejudice the leadership elite and when I refer to the leadership elite I refer not just to the political elite I refer also to the religious elite and to the business elite we have a duty to conduct ourselves with a high sense of responsibility even as we prosecute the context for power historically conscious and patriotic elite all over the world recognize that beyond the letter of the law beyond what the law asserts there are lines that must not be crossed in the pursuit of political power especially in fragile societies and democracies such as ours one of such lines is the willful exploitation of sectional sentiments and the invocation of ethnic antipathies to mobilize a political constituency it is dangerous because it is an attempt that seeks to mobilize by fostering division and hatred and when the elite fail to compete responsibly and moderately foster a sense that everything goes and all of that can only breed instability we have seen this dynamic play out time and time again in our history the model of competition that recognizes no ethical limits or boundaries is a threat to our democracy is a threat to the well-being of our country is incumbent upon politicians and the leadership elite to act and conduct competition responsibly in all the countries in all the countries that have been relatively successful in the journey to overcoming prejudices such as the examples I have given of Singapore and Tanzania and Rwanda that I have just talked about leadership has been critical responsible leadership a responsible leadership elite has been critical the elites of both countries recognized by cohesion and peaceful existence have to be intentionally prioritized and pursued it is not a side agenda it's not a side issue for these countries that have succeeded so far they did not consider cohesion a side issue or just something we talk about they took deliberate steps from policy to implementation this is the challenge of leadership in our own country today and it's a challenge that our leadership elite face elites have a responsibility to discipline themselves first and foremost in the pursuit of political ambitions and their exercise of power to ensure that the fabric of our communities is not rent asunder we must recognize that if peaceful coexistence is sacrificed on the altar of partisan politics then all will be lost we have spoken about the need for politicians to act responsibly but that burden is also on what is called the third sector civil society including and perhaps especially the media the media has a twofold responsibility as an institution that is uniquely influential in shaping public perceptions and attitudes it has to be extremely mindful of what sort of narratives it is projecting and how it frames disputes especially in multicultural and heterogeneous context there are also a number of measures that we must consider as we attempt to chart a way forward first justice is necessary where crimes have been committed they must be stridently prosecuted we know that political actors for example before these elections signed a peace accord on the eve of the elections under the auspices of the national peace committee one point of action is for us to assess the extent to which the actors complied with the undertakings to which they freely committed during the signing of that pact and perhaps even if it is just to inquire to find out to what extent was there complied and it might be the role of small study groups to look at it to what extent are these peace accords relevant to what extent are they useful and what do we need to do to make them even more effective more broadly the government has a responsibility to affirm the rights of all Nigerians to pursue their lawful business and be free from discrimination wherever they live in their country and to repudiate the idea that there is a hierarchy in which some Nigerians may become second class citizens there is absolutely nothing that supports the idea that Nigerians are banned from participating in public life or seeking political office because they allegedly belong do not belong to or do not belong in the places where they reside and must reject any hint of this precisely because Nigerians are everywhere across this nation the people that are most discriminated against in our nation are those that are referred to non-Nigijians wherever they may live in our country and yet many of us are non-Nigijians in some way or the other it makes no sense to exclude so many Nigerians from the public life of their communities communities in which they reside and to which they are contributing merely on account of the fact that they are considered settlers or non-Nigijians Incidentally from the earliest days Nigerians of various ethnic extractions have sought and won political office outside their native regions the first mayor of the Enugu municipal council was Umaru Altani a Fulani cattle dealer who held the position between 1952 and 1958 we have since had similar examples in our democratic practice so we must dismiss the idea that these things are impossible let me conclude with another personal story on the 16th of July 2022 I went in for a surgery on my right femo at a hospital in Lagos as I lay on the operating bed and I was about to be anesthetized full anesthesia which will put me out completely now completely unconscious for the three hours or so for the three hours or so the three hours or so that the operation would take just before I lost consciousness a thought crossed my mind that I would be absolutely at the mercy of these surgeons and paramedics and anesthetians who surrounded the bed that I was lying on it struck me that I had actually allow these people to take over my life and I had to entrust them with my life one of them was from the South East the head of the team was from Delta some were Muslims some were Christians some were from the North some were from the South in fact I suspect that one of them who I spoke to later did not even believe in God yet as I lay on that bed it didn't seem to matter where they came from because they were experts when we make the decision that affect our lives and the decisions that affects our children the most somehow we are able to ignore tribal or religious prejudices the pilots who flew our planes or who fly our planes in fact the pilots about a couple of weeks ago I was flown to Lagos by two female pilots amongst my team who discriminate against women they were left entirely in the hands of these two ladies who flew us all the way to Lagos we don't complain about the pilots who fly our planes a smaller fact I said once that if I was told as I entered one of our presidential planes if I was told that the reason why the pilot was selected was because it's from Ikenia, my hometown and go back to my office and wait until they can find a competent pilot from anywhere in Nigeria I would not insist that you come from my hometown the teachers who teach our children in school we don't necessarily ask where they are from so long as they are good teachers the soldiers and other law enforcement agents who put their lives on the line for our safety every day we don't ask them where they are from so long as they can do a good job even the members of our national football team we don't care if all of them are called so long as they can score we don't care where they are from and we don't ask those questions this is the attitude that we must adopt always to build the nation of our dreams mobilizing the people of a country as complex and heterogeneous as ours under the banner of a common purpose was never going to be an easy task but that's not to say that it's impossible let us never forget that although we may speak different languages and belong to different tribes and profess diverse creeds we are bound by a shared language and a shared hope by a common humanity as Nigerians and a supreme faith in all of the possibilities that lie in our country thank you very much for listening


My name is Rami Alammi, I'm a, oops, that came before. Is it auto advancing? Okay, sorry, that was a bad one. Okay, so let's start again. My name is Rami Alammi, I'm an engineer at Symmetric Corporation here at Culver City. And today I'll be talking about one-click deployment of cloud applications using Ansible. To begin with, of course, you have my details there. If you wanna reach me on social media or the best social media ever, IRC, you can find me there. But I wanna start a small experiment. I always try to pitch to companies that are not usually, or at least parts of companies that are not usually involved in open source to try to support open source a little bit more since my manager is here, actually. Rami, can you say hi? Since my manager is here. I thought if you enjoy this talk or you tweet about this talk or you like something about it, when you post to social media, would you mind using the hashtag scale OCD as in one-click deployment? And if you don't like something about this talk, you can meet Rami after the meeting or call me in support. Both of them will help you out. Symmetric owns an orange, just in case you didn't get that joke. Okay, so currently I'm at a DevOps position I'm my team at Symmetric. And the reason I'm here, or one of the reasons I'm here is I believe in what the DevOps dude said. He said at DevOps, we are awesome. So we take the awesome that's in our head and give it to people who don't have that awesome in their head. Because one important part of being a DevOps person is sharing. It's one of the core values of DevOps. And this is one of the things I'm doing here, okay? And I actually found out who that person was. His name is Jason Freeman and he works for Stackstorm right now. So, and my slides are auto advancing and I don't know why. So this is gonna be a little bit difficult. So I work on a product that's called Symmetric Unified In-Point Protection. And yes, it is soup. So, that's supposed to be a joke. So. Oh, thank you. I appreciate it. Thank you. And it's a wonderful product. Actually, if you saw, come on. This is, sorry, I'm gonna exit the normal slide thing and use this. Okay, I hope you guys don't mind. So the product that I work for and this is the last you're gonna hear about Symmetric in this regard basically manages cloud applications. It's a brand new product that Symmetric grew from the ground up to manage endpoints that the company manages through different products, okay? And like the gentleman who was presenting him from JPL app before me, he actually has a Symmetric endpoint installed on his box. That's why you saw the Symmetric logo there. And this is the product that will end up managing all those. I also identify as a PhD student of Computer Science at USC.  My turn. Awesome. So I also identify there. I also attempted to reboot the USC Linux users group. So no, you don't get to, you should have said fight on. And we have some good work there. So one of the major things before we go to road click is one other thing I identify myself as is a husband and a father. Then I have my family at the end of the room there. So thank you for letting me come to scale. So on the road to one click, you need to know and understand where you're coming from in order to know where you're going, okay? Because every organization has some sort of system in the way they deploy and orchestrate their systems. I don't believe anyone here is still doing it by hand if they have more than three or four boxes, okay? And even if you're doing that, you're not cool if you don't have a configuration management system.   So your goal is to actually sit down, have a monitor in front of you and start looking at everything as it goes along. So the actual idea is you have everything pegged out, all your code, all your infrastructure ready, and all you need to do is just watch it go through and see the green okays and everything is nice, go forward. That's, you can say the engineering fantasy or what you're looking forward to. So who knows what this is? Yes? Excuse me? That's Morpheus, where is Morpheus? He's in the construct, right? Now this is where one click starts, okay? One click starts in the equivalent, in the cloud equivalent of the construct. Basically a big one with nothing. You have no cables, you have no networks, you have no routers, no switches, not even power. Well, cloud doesn't need power, so let's forget that on the side, okay? But you don't have anything, and that's the true nature of one click, because if you see that everything I have is gonna work like it is, or it can stand up an environment, which is a big deal in a lot of places. Stand up an environment from scratch, just using code that can be triggered only by one command, that's where you need to start from. You need to start from the construct. But in reality, even the construct is not completely empty, right? You still have a TV that you can use to see the matrix. Now does the TV show the matrix in the green, squarely characters or in full color? Does anyone know why? The nerds in the room. Why they can see it in full color and not as they see it in the screens in the Nebuchadnezzar? Okay, that's homework. So regardless of what happens, you still need some components that you can not always start from one click, okay? You can incorporate their own code that you can use to stand up at any point of time, okay? But still, they need to be independent from your infrastructure as you go along. So basically what you're asking for is to go from this to this, to this, well this is a GIF that should be working actually, okay, where all the guns are coming in the background, to this where, whoa, I'm up. And actually the first time or first two times you do it, people will be four a.m. in the office looking at each other, wow, it actually works, I can't believe it, okay? And it's a good feeling. And it's a feeling of engineering triumph and we all at DevOps, we actually need to have that. Can you hear me really well? So one of the things, I used to be a teacher at USC. I used to TA a little bit, so I'm used to talking to people. What I'm not used to is not people talking to me back. So I would love to have this more of a discussion kind of thing and we can speed up and slow down as we go along depending on how the time is. But more value will come out of this talk if we start, if you engage with me. So feel free to talk back to me and ask questions. So we're gonna go through some steps that will help take you through the one click process and ending in some things that you would like. So first of all, you need to understand where you are deploying. One of the main things that you need to know is in terms of the sizing of your tenants. Now some of the mistakes that I've been seeing talking to people in meetups and things like that. All your environments are bundled in one account or they're not segregated logically from each other. They're actually at some point under the same network that are not even subnetted away from each other. So that's something that you really need to keep in mind. Also you need to maintain access control to your environment. So you may have some people who can see the VM list of VMs and routers and switches, but they can edit them. But you may have engineers that you don't want even to go close to that. There are engineers that you want them to be able to see logs for production, but not the productions VM themselves, and you want a combination of all those. So this is another thing that you need to keep in mind when you do your one click, because as you configure your environment, you need to make sure that these access controls are in place and not because the code base or the current state of the system doesn't support it. You are forced to give SSH keys or passwords to people that technically you should not give to them. Also, there are some resources that need to be taken care of. Like for example, package managers and code repositories. Are they shared in both environments? Is the same package repo that you use in prod is the same one in stage, or is it the same one in development? That's something you need to consider because mistakes can happen and will happen. And we need to take care of that. Also, you need to make sure that you segregate your private and public networks. Now, I'll be adding extra emphasis on some private networking and some of the aspects that may not be standard for the usual deployments that people have, just because those are some of the things that at Symantec we emphasize, making sure that everything is isolated two or three degrees of checks and balances for anything that we do. So it may be a little bit too tight for your taste, but at least you can go back and make it easier from there. Does that make any sense? Any questions so far? One question, please. Yes, no? I'm gonna start pointing out, yeah. I need to build servers. How you do what? Well, the build servers need to push to the package repositories, right? So if everybody shares the same, you need to make sure that you don't have development build servers having access to your production package repositories just because they happen to be on the same network. And when you light-listed the firewall, you just gave the slash 24, for example, in order for all of them to access. So the main thing is you need to outline all those as you go along and document them. That way, the initial documentation is gonna be on paper. But as you get more and more into your DevOps work, into your configuration management, that will be actually documented in code. And what will happen is, especially if you're using Ansible, we're gonna come to that, it's YAML. So you can technically write code to generate the documentation from your configuration itself. And tools like Ansible Tower, et cetera, can help with that. Thank you for the question. Also, there are some intricacies for infrastructure that you need to keep an eye out for. And I'm gonna point out some of them. Hardware versus software accelerators. For example, you wanna ask, I have SSL termination, for example. A provider comes to you and says, I have a box with SSL termination. Well, is that box a software one or a hardware one? If it's a hardware one, where do you keep your keys when you reboot the box? Do you have an HSM? Where do you keep your keys just in case? What kind of ciphers does it support? Does it have all the PCI approved packages, et cetera?  Is there an F5 sitting up front? Are there two F5s sitting up front? Now, not everyone in your DevOps team needs to know that information, but one or two key engineers, when they start debugging something catastrophic, you actually need to understand me at that layer to make sure that you got what you're, that to be able to understand. Also some intricacies. Are my security groups or firewalls all the stateful or stateless? Do you all know what the difference between stateful and stateless firewalls? Who doesn't, okay. So there are some people who don't. The idea is a firewall, you block traffic coming in, right? Okay, and you can do it going out, but let's take traffic coming in. Traffic coming in, you either block or you allow. If you're blocked, you're blocked, it's done. But let's say you allow the block from within your company, for some reason, a whole block and somebody keeps calling. If it's a stateless firewall, anyone who calls in will get in, okay? Even if someone is sending a sin flood your way, as long as they're whitelisted and they're open to come in, a stateless firewall will let the sin flood come in. Whereas a stateful firewall will understand that there was no negotiation, so I'm just gonna go out drop that packet because there's no state for this connection between these two hosts, make sense? So small things, especially if you're not going with your standard AWS or your standard WAC space or some of these things actually come into play. Also the definition of availability zones, okay? If you go, I work with open stack primarily. If you go to multiple open stack providers, you see some of them define their availability zone as their whole data center, okay? So technically if your database and its failover are in the same data center, they're considered one availability zone per the SLA. So if both of them goes down, you're expected to have one in another availability zone. Whereas other providers have each rock as its own availability zone. So per the SLA, if you have them in two different locks, you're good. Maybe not per your own confidence, but still. Others have it as a hypervisor, which is scary. But at least you have a clear definition of that and you know it when you're going in to design your system. I'm gonna try to speed up a little bit so we have time for the rest of the info. So I'm gonna pick TTLs for load balancers. Who uses RabbitMQ or message queuing service, okay? For example, in order to maintain state between RabbitMQ and some other devices, you have a device, RabbitMQ cluster, there's a connection between one node and RabbitMQ, okay? And that connection stays up until a new connection is made and goes to another node. Now this node may only know the address of that exact RabbitMQ. So if it boots up and that node is down, it doesn't know how to reach a cluster. So how do you load balance? You can use load balancers to do that. However, RabbitMQ has strict policies on what's the TTL for that load balancer. So if your cloud provider does not support it, you'll be debugging RabbitMQ for like three days and you don't know why until you figure out that it was actually the TTL that's the load balancer not enforcing. So some things like this happen quite a bit. So in this talk, we're gonna talk about how we deploy on top of OpenStack. So I think I'll give a five minute preview of OpenStack in general. So OpenStack basically is your open source infrastructure for cloud virtualization. You have your compute nodes, your networking nodes and your storage nodes. And then you have an interface that you use to interface with all of those. The way OpenStack works, they have different projects. Each project is in charge of a specific component of OpenStack. And as a person dealing with your infrastructure, you need to understand what each component does and how to deal with it. That said, not every OpenStack provider provides each of these components. Okay? Now, do you guys mind if I walk down here? I really like to move when I speak. So Nova is the compute layer. So you do all the provisioning through Nova. Swift is for object store. It's one of those things that get dropped if you're in our private cloud and you don't request it. Glance is the imaging as a service. So it's your image management, uploading images, downloading images, et cetera. Keystone is for identity and it's one of the cornerstones of OpenStack and it's the bane of my existence after one other one. After Neutron, Neutron is software defined networks. And it is the, anyone from OpenStack Foundation here or anything? It is the messiest part of OpenStack. It drives me nuts, okay? Because you have software components, hardware components, software components for anyone. Other software components is just crazy. And Horizon here, it's actually a dashboard you use to modify and do a portal basically for OpenStack. Any questions? Okay. So the next step after understanding infrastructure is making sure you understand your application. And there are certain things that you need to keep an eye out in your application. So the application that we're working on right now, there's a Spring has a known hello world sort of application that's called PetClink, okay? And this is the one that I'm using for this exercise here. So you're here, you're gonna be talking with this example to an engine X node that's acting as a proxy. And it will do a proxy pass to all the traffic to Tomcat, which has the application deployed on it that talks to MariaDB in the backend, okay? We have some supporting cast in terms of Git and the second most thing I hate, Jenkins after Perforce of course. Jenkins and also the package manager, okay? So this is the example that we will be following going on through this exercise. So one of the, so as you start your application, your application is mostly still in development and your developers are developing on i7 machine, i7 hardware CPUs with at least 32 gigs of RAM. So if the application does anything wrong, they really don't see it. And it's really hard for them to profile it before they actually send it down to a profiler or even discover it until they deploy it on a VM that's yay big compared to their computer, right? So as you start deploying your application, you'll notice that you need to account for your CPU and RAM requirements and document them, okay?  How big do I really need to make it, okay? And this will come in handy. How much object store, how many block storage do you need? Also, and I emphasize this is an unusual scenario, but your VM egress and your application egress requirements. You need to make sure you account for anybody calling into any VM or container that you have, okay? You need to account for everyone calling in. You need to make sure you allow them explicitly to calling, okay? And your application in general calls out to different locations, okay? And you need to make sure you account for all of those. I went through the exercise where we had this application running completely in a lab environment, okay? And we took it to an open stack instance that was completely firewalled. And egress access is only allowed by permission. So if I wanna go to Google.com, okay, they're not a competitor. So if I wanna go to Google.com from a VM, I actually need to file a firewall change request in order to access Google.com, okay? So in, or of course you can just do a VPN to another node that actually has access, but nobody knows about that one.  But better yet, environment is environment. You can open up tickets. You'll see your own CM code failing, okay? Why? Because this specific node package required to go to that weird repository instead of GitHub that you got white listed for two minutes. Oh, then I need to actually clone that locally so and change the configuration. That way, node will pull it from there as opposed to pulling it from GitHub. For example, or there's a trend going nowadays for a little bit more complex open source software where you say, oh, just curl this URL, pipe, bash, setup, and hey, it works. That never works if you're sitting down the firewall. And it drives me nuts, not knowing what's installed on my machine. I actually, what I ended up doing, I installed CoreOS and put in a huge Docker container and installed the application and did a diff and set down to see everything in order to be able to deploy the application. Stackstone, if you're watching, that's you. Okay. Yes. So that's actually the first thing that I did when I was diagnosing that issue. What I did is I set up Squid Proxy on an environment that has complete egress access, full access to the outside. I set up Squid Proxy and I deployed my whole application and I sent all my logs to Elasticsearch and then I started combing through them with a lot of Grip and Regex and I got the main set of URLs that I need access to. Okay. Then there's the, you want to hear about intricacies. There's one small intricacy. Okay. There's a certain set of firewalls that does not allow you to whitelist URLs. They only look at up by IP. Where is that a problem? Any guesses? SSL, that's a problem. Yes, but mostly I'm lagging, I'm calming something outside. Anyone works with mobile devices, develop apps for any reason. Okay. Your phone talks to Google and any service you interact with needs to talk to Google. Okay. On the back end to make sure that you can push notifications, you can push profiles that goes down to the devices. Good luck tracking Google IPs. You can't do that. And you go to the security office and say, oh, just do that slushy network. Give me the whole thing. That will never happen. Okay. So you need to work out some tricks. So you want to know a trick? How I dealt with that one? Hands. So what I did actually, I have a job in the same environment polling the same URLs. Okay. And whenever a new IP comes in, spits it out, sends an alert, then we follow a request for it. All IPv4 in our case. We're all private networking. So IPv6 doesn't really make sense. And if you have a dotnet engineer who became a Java engineer and you want to explain how to ping local host using IPv6, it's going to take some time. So we kind of switched to that. Okay. So going back here, also bootstrapping requirements. You learn a lot about the application if you go into a clean home environment. How did I ever bootstrap Caltrace? Where did that user come from? Oh, only because that deep matched the SSL certificate? That's how they got it and we couldn't deploy it anymore. So there are certain intricacies and lessons learned that come up. And I'm looking at my rationale because I'm bored. It's because I want to make sure we give enough time for other components of the talk. Okay. Also one important thing you need to know where you stand. In terms of we're all matured of ops engineers or aspiring DevOps engineers or hoping we can be DevOps engineers, you need to know the tool set that you have. Like a lot of people, we were invested in Puppet for quite a bit of time. Let's, I love the Puppet guys. Actually last scale, we sponsored Puppet labs at scale. And I'm so proud of that. But you need to know your tool and you need to know its limitations. Okay. For those who are using Puppet, one of the main issues that we had with Puppet is the construct. Okay. You want a tool that can bring up itself. A chicken and egg kind of problem. So guys, how can I bring up an environment where you need a Puppet master? How do I bring up a Puppet master? A Puppet master. Or you do it by hand. That's one thing. Also it actually Puppet doesn't, at least at the time and until recently does not have support to provision resources in OpenStack natively. The support that they have is repurposed EC2 calls. So if I actually wanna provision an OpenStack using Puppet, that won't work for me. So you need to understand the limitations. And some of the things that you, that you need to look into also decisions that you need to make about environment. Are you gonna use this environment as pet or as cattle?  Please come back to health. I'll patch you. I'll do whatever you want. Just come back again. Are you just gonna kick it to the curb and, oh, Peter's not here. But at least put it on the side and try to, and just bring up another one that's healthy. Okay. Also you need to decide what layers of tolerance do you have for that misbehavior. Do you say, okay, if it's just a misconfiguration, property files went away, maybe the last Puppet one or Ansible one didn't catch something, will I throw it away? That may be more costly than just deploying your property files. So you need to have some sort of measure there on what to do, as opposed to operational failure, that you just totally kick it out and bring something else. Also, you need to make a key decision, especially if you're going to Ansible about your machine state. One of the main powers of Puppet is that it ensures that a specific node is in the state you expect it to be. So even if a work developer went in and changed something, if your Puppet code is right, five minutes later, 30 minutes later, that node is gonna be back the way it was before. Now, if that has value to you, then yes, you may think, you may Puppet, you may go Chef, you may go other resources, that will work for you. Ansible may not, it could be, but it may not be the, it may miss some of the components that you really like. If that thing is important. For example, in our team, we adapted that if it's bad, kick it to the curb mentality. So machine state is not really that big of a problem. And if you have enough sensors in that let you know what the machine state is at a certain point of time, you can put in the code to actually auto heal as you go along. Also, you need to make sure that if you're using Puppet or any language that has a DSL in it, you need to make sure that the more qualified people are writing code for it. Otherwise, you're gonna end up with Puppet code and almost everyone I talk to who uses Puppet are either in one of camps. They either have a dedicated team doing their Puppet code and they're extremely happy and they even have Puppet Enterprise and I am even, okay? Or on the other hand, everyone in the company is writing Puppet code and the guy who actually needs to run it is going crazy. Okay, all kind of weirdness in the code and everything at the end is an exec. Okay, touch, I'll screw it. So if you're really into code or coders as shippers, then you may need to re-evaluate the tool that you're working in. Also, no, you don't necessarily need a Dumber Deployment Tool. You can have a combination of both. Like a lot of shops have a Puppet and Ansible Deployment where they manage their machine state using Puppet but do their orchestration using Ansible. Well, then you need to start putting the same qualities you have for your code, for your DevOps code. Testing, code reviews, making sure no bad code goes in and at the end you start phasing things out and that's what we're doing actually at this point because you can tolerate it up to a certain point but afterwards it's like, I have bigger fish to fry, I cannot deal with this anymore. But if you're in an organization that they can write that code, I think it's harder for you to do that unless you're in a place of authority which usually equal developers don't have that within a team. You should do it regardless but you'll find people who aren't reviewing the code that's next to me or Oscar comes to me and say, hey, I'm sending a code review, can you approve? It's not even in my inbox yet. Okay, so things like this happen and it's the way things work. Something is really broken, it needs to be fixed but at the end you're gonna incur so much engineering debt that at some point you're gonna just need to invest in cutting the code. Does that make sense? And then we can discuss it more offline so we can go along with the presentation. Okay, also this is, if you take anything, anything out of this presentation, I hope you take a lot, but if you take anything, you need to take inter potency. It is the golden rule of developers and it is so important that any tool you pick, if you achieve a cut-in potency coverage of at least 80%, you're in really great shape, okay? What does that potency mean? It means I have my code, I run it once, it'll deploy my whole system A to Z, okay? I run it twice, if nothing is wrong, it'll come back, nothing is wrong. If I run it three times and a node was down, it's gonna run, fix that node and finish the run and report that one node back, okay? So much headache and grief can go that way and that's the fastest way where you can achieve this new buzzword auto healing, okay?  The problem with that, okay, that shell script itself could be at your point. I could be making an API call that is mundane.  If you run an exit script on a curl call, every time that curl call runs, it is considered a change in the state of that node. So you will get our report back saying there is a change in state. That is bad. I should not, and I repeat, I should not get a notification of a change of state unless something actually changed. Does that make sense? So part of your effort, part of your work will be to make sure that even if there's a shell script, and by the way, this is something Ansible shines in. Because you can write a bash script that if the bash script understands that nothing happened, it can spit back nothing happens and Ansible will return nothing happened. So in that case, the actual call will be fine. But in that case, it's not a shell script, it's an Ansible module. Make sense? Okay. Any questions? Do I need to start pointing? For questions? You know I'm gonna call you out. Okay. So one important thing to know also is when to shut up. I know a lot of you here are actually here for Ansible. So now's the time we switch there. So before, so let's Ansible. So if you ask me what Ansible is doing and what it is, as far as I'm concerned, it comes, it ranks like in the top 10 of the best thing after sliced bread. At least in my case. Why in my case? Because my responsibility is to provision a complete environment from construct to guns, lots of guns. That's a quote from The Matrix, okay. Complete provisioning of everything, setting up everything, calling out to external services, reporting back that anything goes down, okay. I happen to use OpenStack and there's amazing support for OpenStack and Ansible. It's not just because Monty Taylor, one of the Ansible, one of the OpenStack board members is in charge of the Ansible code for OpenStack, has nothing to do with that. But actually there's a huge community behind it, okay. And if you go, puppet takes the idea of you get anything you need from the forge. Ansible is the complete opposite. Everything you need is baked in. So they have two repositories. They have a core modules and an extra modules repository. And people just contribute code there, like crazy. So anything, especially for cloud site, anything you need is there. The orchestration component of Ansible is very mature. So what does Ansible do? People say a lot of things, but for me these are the three big things. The first one is cloud provisioning. If you're in my case, you're using OpenStack. You can have in one file, okay, the credentials and details for four OpenStack providers in one file, it's called cloud.m. You can have four OpenStack providers and you can run the same code base once for each provider and you'll get the same outcome in all four. Okay, I did it for two and it works great. I didn't test it with four, but with two and it works.  So it does that. Infrastructure has a service orchestration, so adding a load balancer when you need one, removing a load balancer when you need one. Like, I'll give you an example. We have a case that we call it the magic packet case, okay, where we have this client that calls to a load balancer, okay? This load balancer is an HA proxy in a active passive mode, okay? So you have an active HA proxy that load balances the nodes and then you have a passive one that if this one goes down, this one will come up and a new one will be provisioned somewhere else and it will become the passive one. So far so good? Okay, so what happens is there's this, as far as we can tell and as far as Juniper Network says, there are SDM provider, there's this magic packet that comes in and will go to this load balancer, it crashes the HA proxy. This one comes back to pick up the slot, packs our buffer, the same packet goes to this one, it crashes by the time the next one is up and it crashes by the time the next one is up and it crashes and we have this cascading failure of load balancers, okay? All we needed to do is to provision another load balancer and change the DNS entry from that load balancer to this load balancer, since we were using local DNS on the same hardware, we were golden, okay? Make sense? So things like this is really easy and fast to do with Ansible, for multiple reasons, one of them being how easy it is to pick up as opposed to other tools. So the way it works is, anyone has a pointer by any chance? I'm really used to pointing and stuff. Okay, so what happens is you have an inventory. Everything in Ansible is based on an inventory, okay? I have these sets of nodes and each node has certain properties, so I say give me all web servers, it'll give me all, oh, thank you so much. Great, appreciate it. So you have the inventory file here and any VM you own is part of that inventory, okay? And you can tag your files in INI format, your VMs, any way you want. So if you say, all my Phoenix two nodes, you can list 20 and you can have all my web server nodes and it can have five of those 20, okay? So when you query Ansible to do something, it'll just pick one of those, whatever group you give it to deal with. And also playbooks. And if I have one wish, we stop calling things recipes, playbooks, scripts, whatever hats and knives, et cetera, just pick a terminology. We should write out a name for everything in computer science, except configuration management. So I would love to change those, but I'm partial to playbooks so we'll go with that one. So you give an inventory and a certain playbook which is a set of tasks to Ansible to run and Ansible will figure out where to run it on. It'll SSH those boxes, download its mini small agent, put it on that box. That box has, does not need anything, except Python 2.4 by the way, to be installed on it. And then that whole thing will run. It'll come back and return what happened. That's it. Now if you happen to have an evil shell script, it'll take that shell script there, it'll run it and it'll come back telling you that it changed regardless of what happened. Questions? Okay. It sounds rosy, trust me it is, until it's not. So how do you install Ansible? Let's say you have an existing system right now and you wanna use Ansible to run it. You have VMs provision. If there are Linux boxes and there are more than CentOS 6, which most likely is the case, or if it's the last LTS for Ubuntu, you have a Python that's big enough to handle Ansible, okay? All you need to do is clone the latest version of Ansible if you're so inclined. Or of course you can use your package manager or pip to install it. Just make sure from now on, that you're using Ansible 2.0 or more. Because there are major differences between the previous Ansible and Ansible 2.0, okay?  Now, if you wanna deal with OpenStack, you need to add these lines here. Sorry, Ansible needs these on your local box and these are for OpenStack, okay? OpenStack basically you need the Nova client, Neutron client, Keystone client and OpenStack client. And Shade. Shade is actually the Python library that all the calls that Ansible makes to OpenStack are translated from Ansible-ish to OpenStack-ish using Shade. Yes, yes, it is agentless in the sense that you don't need to install an agent on any box. However, the lead functions, when you tell it, go install nginx on those boxes. It'll SSH there, create a temporary directory under your user, install its agent, which is basically a Python shell that will run everything that it needs to run and then it will clean up after itself and come back. The agent, oh, you just got it from here. It's part of the Ansible code base, okay? And I looked at Ansible code base, it's actually beautiful. If you're not very good in Python and you wanna look at good Python code, in my opinion, I'm not sure other people, but this is actually some good code to look at and you can make sense out of things. There are some intricacies here and there and we're gonna see some of them in the code samples, but it's some good code. Now, small hint, if you ever have a problem when you SSH, especially if you're using a Bastion box, you need to install this small package that's called SSH Pass, okay? Just a small hint, if you're wanting to an SSH problem, just install this, we'll fix it. Have no idea why, but it does. Though, don't get it from source, it's hosted on Sourceforge and they have so many ads and stuff on their website, so just any version from your package manager will suffice. And yes?  Because MIT is too liberal for you, right? No, no, it's not for security reasoning, it's for, okay, when you use a Bastion host, the Bastion host, all the SSH work is offloaded to the Bastion host, like a jump box. So, instead of you as a searching to the end server, you need to SSH this server, which can SSH over, and you need your SSH agent to follow through, there are components of SSH Pass that you need for that. Okay? If you need your password, not your key. I can reproduce the problem. Don't get me started. Can I try Semantic? No? We'll talk offline. And by the way, ladies and gentlemen, Professor Ted Faber, he's my open source mentor, so that's why he's giving me a hard time. Yeah, I'm gonna blame him, and you can blame Scale on him, he's actually called the Godfather of Scale. He was there when it all started. So, thank you. Round of applause, everyone? Thank you. Round of applause. That'll get you to stop talking. Okay, everybody else. Okay, so this is when we're gonna go to code. Yes. Okay, so think of it this way. And I'll give you another example afterwards, but this one is, so as part of securing your own network, okay, not all your boxes need to be accessible from the outside. So what you do is you create a private network, think of it like your home network, okay? You have your own router that's set up. All your computers are inside your home network, are using a 192.168.something.thatsomething IP address, right? But you cannot SSH that box directly. But let's say you need to manage, if you're a user inclined, I'm sure a lot of people are, you want to SSH to your home box from Office. So how do you do that? You either put your box in a DMZ zone, or you have a box inside your network that has a public IP address. Okay, and you SSH to that box, and that box and only that box has, think of it as two network cards, one network card attached to the outside world, another one attached to your inside network, and you can talk to your inside network from it. So that's what you use as a bastion box. So, especially if you're using open stack or private network, you have the luxury of having none of your boxes accessible from the outside, which is almost a requirement. Okay, and you have one box that you can use to jump to all those other boxes. Yes. You usually have, what happens is, like in our case for example, we have one box in each tenant. So if we have a specific project, we have one box in each. That's, and that's called the overlay network because that's a virtualized software defined network. Then you have actually physical boxes on the underlay network, okay, that are controlled, that are almost bare metal basically. And you allow those to calling, okay. And you can also whitelist an external box as long as it has an IP address that's publicly accessible and known.  So apparently we only have 10 minutes to go through the meat of the talk and you can blame it on Professor Fever. Okay, so. Okay, and I officially hate this. Okay, so. So I put up this QR code before the talk started in hope that people will actually, okay. You know what I can use? Justine, do you mind coming on my computer please? Okay, so this is the code base where we have the examples for here. So the first thing that I want you to see is, can you please go to the Ansible configuration file? Okay, now let me bring up a case and tell me what problem you see coming there. I have, I'm provisioning brand new boxes. Boxes I never talked to before. And I'm gonna SSH to them, give me one problem I'm gonna face. The user's provision as part of the image. Host key, correct. So how do I deal with that? Yes, that's the easy way of doing it. However, in the production environment, you might wanna actually have the machines call back with their host key so you store it locally. That way you don't, you keep the keys as you expect. So, host keys checking, you just set it to false, okay. Also you might wanna allow the forwarding agent. What is the forwarding agent? Let's say you're using a jump box like we talked to about before. Now you load your keys on your box here, my personal laptop. And I SSH to the jump box. I don't own that jump box. Joe Schmoe owns it. I don't wanna put a public and private key that are attached to me on that box because Joe Schmoe has pseudo access. And he can read my private key and he can practically impersonate me, right? So I shouldn't be doing that. So what I do, I actually load an agent and that agent forwards my credentials with me as I jump through boxes. Make sense? So these are things that make my life easy as I go along. Okay, let's go back. And if we scroll down, let's go to clouds.default.yaml. The one under, yeah, that's why you're up there and I'm down here. Yes. Okay, scroll down please. So this is the, if you're dealing with OpenStack or even you're dealing with AWS, you need to define your credentials and your details somewhere. So this is called your clouds.yaml file where you can define an n number of clouds in this file. And remember it's yaml based. So indentation like Python indentation does matter. Okay. And you really said if it's a private cloud or a public cloud, if there's a region prefix, so if you're in Virginia one, Virginia two, and Keystone is the authentication details and the username, agent Smith, the password I hit oracles and the all these details, you actually get them from OpenStack itself. So once you're given access to an OpenStack instance and use Horizon, you go to security, you say, don't give me the details of in a bash file.  Make sense? And the code is on GitHub, so we can follow along. So let's go one step back. So the first thing I wanna do is go to the construct. So the goal of the construct is to basically build my network infrastructure. Okay. And pay attention with me here because we're actually going through some of the Ansible basics as we go along. So first things first, we said Ansible is based on inventory, right? But in order to create VMs, I'm calling an external server. I'm not calling a server that already exists. Should I put that server as part of my inventory? No, I just say use localhost. I'm just making API calls. I'm not SSHing anywhere, right? So you can actually have modules that do not need to run on boxes. They just need to send alerts. They just need to make an API call. They just need to make something, even email someone, okay? And you just set the host that it runs on a localhost, okay? And you set the connection to local because the default it was SSH to your localhost if you don't tell it. So you set it to local and gather facts. Everybody familiar with Factor in Puppet? That's basically a script that you call and gives you everything that could be known about your box, okay? And that's how Puppet uses it to keep track of everything. So you're telling it, don't waste the two seconds you need to collect information. I don't care about the box that I'm, I don't care about the box information right now. Now, Ansible has something called pre-tasks and tasks. It's simple. You have a set of tasks that you wanna run, okay? It goes one by one, predictable. Anyone tried to do one by one in Puppet? Have you ever succeeded? I don't think so, okay? You can, okay, I know you can but you need to be an engine, okay? So sometimes you wanna run tasks but in order to get tasks you need to have some information collected beforehand. And that's what we do in pre-tasks. So in this case, I said I have a file that's called project.yaml, okay? That I need you to import all the information from. So would you mind duplicating the tab?  And project.yaml, okay, scroll down. So here I'm putting some information that are variables. This is where I keep my variables basically. The whole idea is I wanna keep my playbook as generic as possible. So if I run it on different environments, all I need to do is change the variables, okay? So I define, I'm calling my project the matrix. I give it the user credentials. I also provided the SSH key. Why do I need to give it my SSH key? I'm SSH-ing into boxes so I need to give it my bubbly key otherwise I need to put my password everywhere, okay? By the way, hint, hint, if you're using Ansible all your boxes should have SSH. You should have your keys installed on all the boxes and you should have password list pseudo, okay? And the most common playbook that people write is the playbook that SSH to all the boxes and installs your key. There's actually a module for it. There's a question, yes. Very, very good question. So Ansible Tower, which is the product that the Ansible company says has an SSH key management system in it. In our case, we have a hybrid SSH show for production. We actually have a routine that goes in and deletes all the keys and even deletes all the users because we use LDAP to authenticate. So if you're gonna use something in production, provision a key on the fly and plug it in for you. And it's taken out after a while so nobody stays in production for longer than they need. Okay, so there are different ways to do it but if it's not production you can be a little bit lenient about it. There are projects that you can use to do it but I really didn't find one that I liked other than vault.io but I didn't have a chance to vet it properly. Okay, so also I wanna define some networks. Application needs some networks, right? So I'm gonna define a network that I'm gonna call the jump network and in OpenStack each network needs to have a subnet because the network can have multiple subnets. So I'm saying, great, this network that has this subnet and this is the IP address range that I want that network to have. And I go down for five networks. Would you mind going down there? And also I wanna define a router that I can use to connect all these networks together. So far so good and basically these variables define everything. So let's go to the previous tab. And so the first thing you do in here I'm assuming the most vanilla application you could have. You don't even have your key uploaded. So what you do here, the way Ansible works is you call a task, you start with a tick here and you give it a name. This is a comment basically. So when you do an Ansible run, this is the comment that's gonna come out. This is a module. Notice that the name and the module are in the same indentation level.  So keep that in mind. Then we indent a little and these are the variables that this take. That this module takes. It takes a cloud because remember the clouds.yaml file that we had? It needs to know which cloud to pull out of that file because you can have 10. So you need to tell it which one. And, all right, because I'm smart I kept it in a variable file, right? Okay. And I wanna say present because you can say absent and you can go in and delete a key from being there. And then I give it a name because I need to use it later and I gave it the public key file. Make sense? By the way guys, I kept my key there so if you wanna put it on any machine you want feel free to do so. Okay. Then I wanna start creating the networks. Now we're doing a little bit more and the advanced Ansible-ishness, okay? And two minutes, I promise I'll stop. So this is basically what I'm doing is I'm doing a loop, okay? So same thing, I have a module. I have the properties of each module but I'm looping over project networks because I remember I have project networks and I didn't have a set of networks under it and then each network had its own properties, okay? So I said loop over all the networks and from each item in that you're looping over give me the net name, network name. Fair enough? Let's scroll down. This is creating the subnets, okay? And it's the same thing, I'm looping over it and but I'm using more variables. So for, give me the net subnet, the CIDR and actually the network name also. So far so good? Now the last one, it's called OS subnet tasks. Sometimes when you're running something the inventory is not kept alive. The inventory is red at the beginning and it's used forward. Sometimes you need to load stuff from memory as you go along. So you have a module like this that tells me just give me the facts please, okay? And you give it the facts and it will store in a variable for you that you can use and it's basically just a dictionary and you can parse it any way you want, okay? So unfortunately, thank you justine. Unfortunately this is the, as much we can go to at the moment but I'm gonna sprint through a couple of things quickly and if you don't mind sticking around for five or 10 minutes. So the second step that we'll actually go through is the provision document and this one is where I actually provision the VMs and in this case I'm using an Ansible role that I created. The role is called provision VM and the role takes input that are the cloud name and the specifications of the VM itself. Now as since I'm a good boy what I do is I store all those into variable files. You can see I stored the VM specifications in a variable file. So the name of the VM, the key name that I attached to it the size of the VM and basically how many I want of it. So it'll create as much as I need. So going back to the presentation. So you start basically from an empty set.  And when that happens actually the Asian technically lost because you actually provisioned everything that you wanted to provision and I guess I will say now you know kung fu as Neo famously said. So we can discuss this more offline. I appreciate your time and your patience and I hope you learned something new today. Thank you very much. They're gonna be posted on the talk itself on scale.


Welcome to Series Motor Runaway. If the load being driven by a series DC motor becomes disconnected, a runaway condition occurs. In this situation, the motor speed may accelerate until the motor physically breaks apart. Under normal operating conditions, the current flowing through the armature and the series field coil develops the amount of flux that produces just enough torque to turn the load. At the moment the load is removed, the following conditions develop. The amount of current that flows through the coils is still at the level that was required to drive the load. Now that there is no load, this large amount of current is higher than what is needed to turn the armature, so the motor speed increases. As the motor speed increases, the counter-electromotive force generated by the armature also increases. Because the CEMF increases, the current through the armature and field decreases. Let's review. When the load is removed, the motor speed increases, the CEMF increases, and the current through the armature and field coils decreases. Since current through the armature and field coils decreases, the strength of the flux lines around them weakens. If the strength of the flux lines around the coils were reduced at the same rate as the current flowing through them, both would decrease at the same rate that the speed increases. Therefore, the CEMF would stop increasing, the current would become constant, and the armature speed would stabilize. However, because the series field coil has only a few turns of heavy wire, its flux strength decreases at a faster rate than the armature current decreases. This condition keeps the CEMF from building at a rate as high as the rate at which the motor speed increases. Since the CEMF is unable to reduce the current fast enough to stop the motor speed from increasing, the motor breaks apart. Due to their runaway characteristics, it is recommended that belts or chain drives that can break should not be coupled to the shaft of the series motor. Indicate what happens to the following conditions when the load is removed from the series motor. The counter-electromotive force, or CEMF. The CEMF increases. Field strength. The field strength decreases. Motor current. The motor current decreases. And armature speed. The armature speed increases.  The strength of the flux lines decreases at what rate that the armature current decreases due to the few turns of the series motor field coil? A. The strength of the flux lines decreases at a faster rate than the rate that the armature current decreases due to the few turns of the series motor field coil. And one final question. An unloaded series motor will break apart because the what is unable to reduce the current at a rate that is as fast as the rate at which the armature speed increases? The answer is B. The counter-electromotive force, or CEMF. Congratulations! You have completed this learning object, series motor runaway.


What's going on everyone Sam here with late in sports cards ripping 22 panini Donares football hobby three box break number 11 Picker team style. I don't know why I was thinking it was a random I can read off a list of our names and teams Aaron H for the Panthers Adam R. Giants Anthony P. Buccaneers Bennett B Bears Chad W. Niners Chris C with the Dolphins Corey C. Texans Daniel H. Falcons Daniel B Eagles Dominic F Packers Edward P. Cowboys Eric J. Cardinals George Y. Chargers Vikings E&S with the Colts Jim J football team Jonathan F. Bills Joshua S. Ravens Kenny S. with the Steelers Luke M. Jets Matt M. Lyons Matthias S. with the Browns Max G Broncos Noelle A has got the Raiders Patriots Saints Paul W with the Chiefs Ray G. Titans Rob C Bengals and Jags Russell P. Seahawks and Taichiro and with the Rams. Good luck everybody. Let's do some Donares some nice trace boxers here there's Calvin Austin the rookies Wanda Robinson portraits and Mike Singletair got Devonta Smith elite series there's a Debo Red uh press proof is Derek Brown owns Pierre Strong Jr. the rookies for the Patriots Trayvon Walker portrait red T. Higgins press proof for the Bengals Bengales they have Bengals there's uh missing name plate Cole Comet for the Bears Desmond Ritter elite series rookie Daryl Henderson champ is here and Sean Alexander press proof my goal is we have uh You get one of those missing name plates per box My goal is always to never have to look at the back of the card to know exactly who everybody is And so far I've only I've only missed one so far really in every single Donares box we've done I did I got that one though. Threl Davis Tried uh Jim Kelly. There's Jermaine Johnson Brown to 100 on the portrait This one there for the Jets scratch Jets power plus stack Prescott That's one there. We got Road to the Super Bowl Vaughn and Mack Jones I love you and I like Luton Oh, you know I can't even say on the stream when I look at you what I see There's Derek Carr. Tell you one thing There's elite series Derek Carr, Matt Stafford, Tony Vaselli on the red press proof But weird Callie Donnie made some noise Derek Henry There's Chris Olave. Now he collected I think it's in the group chat. David Bell. Yeah I had to turn it off immediately It's grown man. Yeah Yeah Bass we got nice Curtis Martin on the Canton Kings. That is number two 199 for the Jets. Nice one there Jets Canton Kings Curtis Martin Hall of Fame Derek Carr And another red press proof Derek Brown. He had Bryson there taking shots at me yesterday The rookies Matt Corralo is pretty funny Called him out of me when he got here. It's uh Charles Woodson and Bailey Zappy to 100 No need to recappy that Zappy And I don't miss that That's on there for the Patriots. I hope we have a series one tomorrow I gotta really bring back all the shticks for tomorrow There's elite series rookie James Cook Tony O Gibson and Don Russ 92 Derek Carr I think we do have a series one tomorrow I think we do Keontae Ingram Uh, Micah Parsons action all-protes for the Cowboys. There's a Bailey Zappy and Clinton Portis Sweet shot Got a uh, Gold Daxton Hill That is six of ten on the optic preview. Nice one there on the gold ice for the bangles. Congrats on that sincey Ice ice, baby. Yes, sir. Here we got that one. So Jeremy Ruppert press proof Matt is cool. The optic previews that come out of this like the Pandora's are really cool Uh, first of all, we had a Jamo rookie on top and then we've got Travis Kelsey action all-pros Malik Willis rookie and Derek Brown the third Derek Brown red press brief out of this, uh, ox Everybody fired up to go fishing. You in? Yeah, sure. Uh, Bob Lilly uh, legend series Got Jamar Chase and red Elajma Skymore Next micro next three months Dominators, uh, Justin Herbert James Cook and then it'd be good to go if you enjoy bass fishing 30 out of 75 It's Micah Sicki nice one there send an empty box and wrapper a little bit scuffed on the surface in the bottom Dolphins Is this the uh, I don't miss that. No, you gotta Give it to you every time Um, more than I'm gonna say is this like the prime time of year for bass Yeah, more people may, uh, big time there Makes sense There's signature marks Tim Brown for the Raiders Nice, that's 35 out of 50 Congrats on that. There you go. Uh, Vegas nice Tim Brown signature marks Chris Olave on the rookie Aaron Rodgers and Teelo And last time we've gone to each time I bring one of y'all out We'll see which one of y'all catches the biggest fish, right? Then we start another competition True That is a that is a you know fun. Just yeah, I mean this competition Drake London in a good way Matt Stafford and Steve Young You can talk a lot of you know smack. Yeah Yeah, just trash Just talking trash Someone's gotta get something You just you're good in the kayak, right? Yeah There's uh sauce gardener See Higgins Uh, Dick Vermeel and red thurman thomas press group Yeah, that would be fun Craig dualsich And George Pickens the rookies Jay Jetta's dominators Kenneth Walker and George Kittle I got that light preserver true I need to get one man.  How can you pick it nice one there? Ready to rookie on top for the Steelers Tom Brady Can you pick it again and this time Dan fouts going to the Chargers that is 21 out of 75 on the uh press proof die cut Johan Dotson rookie Veilish Jones elite series rookie So that way Aaron Donald and Josh Jacobs Boy a mafia Peyton, uh dominators Aden Hutchinson and Peyton again Travis Jones Yukon and Raven Levin Najir's franchise features Trey and a Walter Jones red press proof for the Seahawks nice hall of fame hit there for the seabirds the old seabirds Here's strong jr Dominators Uh, not dominators. That's action all pros. There's a Deshaun Watson Uh, Great Iron Kings Drake London and Jeremy rocker red press proof Like we got a hit in here. I have a nail So we do it's going to be Jersey Kings of Josh Allen nice one there going to the Bills 158 out of 399 QB1 up in Buffalo Congrats Buffalo There you go Michael Vick And Denzel Ward Moving his way up Bailey Zappie George Pickens me Uh, Robert Woods 39 out of 100 Champions here champions here Bobby trees. I don't think I have either Oh, right. That's why yeah, that's right Reese Hall Here's strong champions here Cooper cup and Nick Chubb Fidere Amethyst Rated Roof Dominators CMC. There's Peyton Manning and Jack Youngblood 2002 Don Russ missing nameplate van Jefferson For the Rams still still perfect on the deck like those Drake London red press proof That must really be eating you off inside that I've gotten both of those so far. Bailey Zappie No need to recap be this That's what eats me up to the side The rookies want to tell Robinson You just can't do all of it Denzel Ward Cherries inside Trevor Lawrence Throwed to the Super Bowl in the Homes and Jalen Hurts red press proof Of course thinking about Drake Youngblood, right?  What's the first thing that's gonna happen? You have the guy out there that doesn't bring his clubs.  Oh dig for meal. Nice one there. It's a 99 coach dig for meal hall fame 22 That's going to the Rams. Nice one there. Uh LA On the inducted auto.  Can he pick it rookie?  I'm just gonna drink your bees It's like what dude? James Coke in the rookie. Who does that? Matt Corral Three dude John Randall One more Yeah, sure Unreal Should jump him after I'm down I don't even really think I need to help you do I'll let you get it One bad mistake away That's not the road you want to go down. No No, it's uh desmond ridder It's tough.  Fishing's fun, man. Just a little like relaxing What?  You're chilling Come on, Desmith Sorry to start sad Bull in. There's a bow melt in red press proof for the Seahawks Rated rookie I love it Buck Pierce the rookies It's Traylon Birks Do you know Road to the Super Bowl, Debo to 100, messed up corner, empty box and wrapper, coming to the Niners You know how to use a No All right What is that? Baitcasters doing the pistol bullet and throw it and your thumb holds the thing from spinning No, I have no use to it Just uh, yeah, and then just and then clip like Just turning it back in, yeah Yeah That's good and well Uh, yeah, let's go into the Niners Choose Yep, got it DeMarcus Ware TJ Watt and Matt Stafford Jim, come down to Florida, go hit the ax Absolutely Absolutely Marge Chase Tyrann Davis Price and Randy Moss Brock Purdy on top Is he still flying through the Roof? Bob Lilly, Justin Herbert and Jonathan Greer No, it's still pretty Like I saw a um, I was just like buying stuff on eBay A lot like bidding on stuff on eBay last night And there was a Purdy like this Purdy That Purdy ended at like $15 Nick Chubb Pudding Gonzalez and Roger McCreary There's Cooper Cup Jersey Kings for the Rams 42 out of 399 Congrats on that again Rams Rams with two hits now Not usually the the highest tiered team either So that's awesome Congrats on that LA Boom TJ Watt Calvin Austin on the portrait And a Nelson Aguilore That's two 100 for the Patriots Now the thing I was saying that must be eating you up Is that I've gotten both of the missing main plates correct There's some Ritter in this break That must be really pissed at you Dak Prescott I forgot about that That mom's hysterical I know you're pissed about that You're just rooting for chaos over there Dax Hill Got a Tyrann Davis Price The Rookies Russell Wilson, Great Iron Kings And a Lawrence Taylor That's sick What? Just in general No, the old D The gold We've got Oh boy, David Montgomery missing name plate Let's go 3 for 3 What do you know about that? The big brain on Brad There's Fadarian Mathis Would you have gone all for 3 on those? Purely I like Pierce Rated Rookie I'm just here for the funny guy That's it Got nothing else for you Kind of to Walker Seahawks Carrier E-Lum and Marcos Calloway When you're in stir the nest up And walk out You gotta just go nuts Got a Derek Carr Thurman Thomas What did you say to me today? Oh, when I kept tapping you on the shoulder you go I'll rip your finger off Romeo Dobbs There's C.D. Lam A. Kenneth Walker And an Orange Nick Bonito That is 2 of 42 Got another messed up corner on that one We'll have an M-Box and wrapper for Broncos All right Pretty standard with uh That's how to say it Why don't you dig through your home Will you live? Cause you're trash Oh definitely Derp For sure man We're not that far from Disney honestly Got J.K. All Day Dobbins Elite Series 32 out of 99 for the Ravens Nice one Baltimore Not too far at all dude Chris Olava Chuck Norris fans of the game and Teela John Matchy Filler Aiden Hutchinson the rookies Pierre Strong and Larry Johnson That'll do it for the break guys Do a quick recap here We had Cooper Cup Rams Josh Allen Bills Curtis Martin Jets Daxon Hill to 10 on the uh Gold Ice for the Bangles Preview J.K. Dobbins Ravens Dick Vermeel for the Rams And Tim Brown for the Raiders That'll do it for the break guys Thanks again for the fill Next up number