forked from mattmakai/fullstackpython.com
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfiguration-management.html
More file actions
185 lines (179 loc) · 9.33 KB
/
configuration-management.html
File metadata and controls
185 lines (179 loc) · 9.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<!DOCTYPE html>
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Full Stack Python shows how an entire Python web application is built and deployed. Each section of the guide explains a different key concept, from the server through the Python WSGI web framework to the front end JavaScript.">
<meta name="author" content="Matt Makai">
<link rel="shortcut icon" href="theme/img/full-stack-python-logo-bw.png">
<title>Configuration Management</title>
<link href="theme/css/fsp.css" rel="stylesheet">
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
<style>
html,
body {
font-size: 18px;
color: #222;
background: #fefefe;
}
body {
padding-top: 30px;
}
.footer {
padding: 20px 0 30px 0;
}
a, a:hover {border-bottom: 1px dotted; color: #444;}
a:hover {text-decoration: none; color: #000;}
.logo-title {font-size: 56px; color: #403072; padding-top: 80px;
font-family: "News Cycle", "Arial Narrow Bold", sans-serif;
font-weight: bold; line-height: 30px; margin-left: 5px;}
.logo-title a, .logo-title a:hover {color: #000; text-decoration: none;
border-bottom: none;}
.logo-title a:hover {color: gray;}
.logo-image {vertical-align: top; border: none;}
a.list-group-item.active {background: #444; border: 1px solid #222;}
a.list-group-item.active:hover {background: #444; border: 1px solid #222;}
#sidebar {margin-top: 30px;}
@media (max-width: 600px) {
.logo-header-section {
margin: 20px 32px 0 0;
}
}
</style>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-19910497-7']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body>
<a href="https://github.com/makaimc/fullstackpython.github.com" class="github">
<img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" />
</a>
<div class="container">
<div class="row">
<div class="col-md-12">
<div class="logo-header-section">
<a href="/" style="text-decoration: none; border: none;"><img src="theme/img/full-stack-python-logo-bw.png" height="42" width="42" class="logo-image" /></a>
<span class="logo-title"><a href="/">Full Stack Python</a></span>
</div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<h1>Configuration Management</h1>
<p>Configuration management involves modifying servers from an existing state to
a desired state. Numerous tools exist to modify the state in a controlled
way, including <a href="http://puppetlabs.com/puppet/what-is-puppet">Puppet</a>,
<a href="http://www.getchef.com/chef/">Chef</a>,
<a href="http://www.saltstack.com/">SaltStack</a>, and Ansible. Puppet and Chef are
written in Ruby, while SaltStack and Ansible are written in Python.</p>
<h1>Ad hoc tasks</h1>
<p>Configuration management tools such as Chef, Puppet, Ansible, and SaltStack
are not useful for performing ad hoc tasks that require interactive responses.
<a href="http://docs.fabfile.org/en/1.8/">Fabric</a> and
<a href="http://docs.pyinvoke.org/en/latest/">Invoke</a> are used for interactive
operations, such as querying the database from the Django manage.py shell.</p>
<h2>Ansible</h2>
<p><a href="http://www.ansibleworks.com/">Ansible</a> is an open source configuration
management and application deployment tool built in Python.</p>
<h3>Ansible Resources</h3>
<ul>
<li>
<p><a href="http://docs.ansible.com/index.html">Official Ansible documentation</a></p>
</li>
<li>
<p><a href="http://www.insom.me.uk/post/pycon-talk.html">Python for Configuration Management with Ansible slides</a>
from PyCon UK 2013</p>
</li>
<li>
<p><a href="http://devopsu.com/newsletters/ansible-weekly-newsletter.html">Ansible Weekly Newsletter</a></p>
</li>
<li>
<p><a href="http://labs.qandidate.com/blog/2013/11/15/first-steps-with-ansible/">First Steps with Ansible</a></p>
</li>
<li>
<p><a href="http://red-badger.com/blog/2013/06/29/ansible/">Red Badger on Ansible</a></p>
</li>
<li>
<p><a href="http://lowendbox.com/blog/getting-started-with-ansible/">Getting Started with Ansible</a></p>
</li>
<li>
<p><a href="http://softwareas.com/ansible-and-linode-what-i-learned-about-controlling-linodes-from-ansible">Ansible and Linode</a></p>
</li>
<li>
<p><a href="http://jlafon.io/ansible-duo-security.html">Multi-factor SSH authentication with Ansible and Duo Security</a></p>
</li>
<li>
<p><a href="http://devopsu.com/blog/ansible-vs-shell-scripts/">Ansible vs. Shell Scripts</a></p>
</li>
<li>
<p><a href="http://missingm.co/2013/06/ansible-and-salt-a-detailed-comparison/">Ansible and Salt: A Detailed Comparison</a></p>
</li>
<li>
<p><a href="http://www.nickhammond.com/automating-development-environment-ansible/">Automating your development environment with Ansible</a></p>
</li>
<li>
<p><a href="http://devopsu.com/guides/ansible-post-install.html">Post-install steps with Ansible</a> </p>
</li>
<li>
<p><a href="http://lattejed.com/first-five-and-a-half-minutes-on-a-server-with-ansible">First Five (and a half) Minutes on a Server with Ansible</a> </p>
</li>
<li>
<p><a href="http://davidwinter.me/articles/2013/11/23/introduction-to-ansible/">(Detailed) Introduction to Ansible</a></p>
</li>
<li>
<p><a href="http://blog.couchbase.com/create-couchbase-cluster-with-ansible">Create a Couchbase Cluster with Ansible</a></p>
</li>
<li>
<p><a href="https://groups.google.com/forum/#!msg/Ansible-project/WpRblldA2PQ/lYDpFjBXDlsJ">Idempotence, convergence, and other silly fancy words we often use</a></p>
</li>
</ul>
<br/>
Next read the
<a href="/web-analytics.html">web analytics</a> section.
</div>
<div class="col-md-offset-1 col-md-3" id="sidebar">
<div class="list-group">
<a href="/introduction.html" class="list-group-item ">Introduction</a>
<a href="/servers.html" class="list-group-item ">Servers</a>
<a href="/operating-systems.html" class="list-group-item ">Operating Systems</a>
<a href="/web-servers.html" class="list-group-item ">Web Servers</a>
<a href="/platform-as-a-service.html" class="list-group-item ">Platform-as-a-service</a>
<a href="/databases.html" class="list-group-item ">Databases</a>
<a href="/wsgi-servers.html" class="list-group-item ">WSGI Servers</a>
<a href="/web-frameworks.html" class="list-group-item ">Web Frameworks</a>
<a href="/application-dependencies.html" class="list-group-item ">Application Dependencies</a>
<a href="/static-content.html" class="list-group-item ">Static Content</a>
<a href="/source-control.html" class="list-group-item ">Source Control</a>
<a href="/caching.html" class="list-group-item ">Caching</a>
<a href="/task-queues.html" class="list-group-item ">Task Queues</a>
<a href="/api-integration.html" class="list-group-item ">API Integration</a>
<a href="/no-sql-datastore.html" class="list-group-item ">NoSQL Data Stores</a>
<a href="/web-application-security.html" class="list-group-item ">Web Security</a>
<a href="/logging.html" class="list-group-item ">Logging</a>
<a href="/monitoring.html" class="list-group-item ">Monitoring</a>
<a href="/configuration-management.html" class="list-group-item active">Configuration Management</a>
<a href="/web-analytics.html" class="list-group-item ">Web Analytics</a>
<a href="/best-python-resources.html" class="list-group-item ">Best Python Resources</a>
<a href="/about-author.html" class="list-group-item ">About the Author</a>
<a href="/change-log.html" class="list-group-item ">Change Log</a>
</div>
</div></div>
<hr/>
<div class="footer pull-right">
<a href="http://www.mattmakai.com/" class="underline">Matt Makai</a> 2014
</div>
</div>
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script src="theme/js/bootstrap.min.js"></script>
</body>
</html>