You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: en/latest/_sources/using-operations.rst.txt
+31Lines changed: 31 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -227,6 +227,37 @@ Including files can be used to break out operations across multiple files. Files
227
227
# Include & call all the operations in tasks/install_something.py
228
228
local.include("tasks/install_something.py")
229
229
230
+
Additional data can be passed across files via the ``data`` param to parameterize tasks and is available in ``host.data``. For example `tasks/create_user.py` could look like:
231
+
232
+
.. code:: python
233
+
234
+
from getpass import getpass
235
+
236
+
from pyinfra import host
237
+
from pyinfra.operations import server
238
+
239
+
group = host.data.get("group")
240
+
user = host.data.get("user")
241
+
242
+
server.group(
243
+
name=f"Ensure {group} is present",
244
+
group=group,
245
+
)
246
+
server.user(
247
+
name=f"Ensure {user} is present",
248
+
user=user,
249
+
group=group,
250
+
)
251
+
252
+
And and be called by other deploy scripts or tasks:
253
+
254
+
.. code:: python
255
+
256
+
from pyinfra import local
257
+
258
+
for group, user in (("admin", "Bob"), ("admin", "Joe")):
Copy file name to clipboardExpand all lines: en/latest/apidoc/pyinfra.local.html
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -165,7 +165,7 @@ <h3>Navigation</h3>
165
165
<spanid="pyinfra-local-module"></span><h1>pyinfra.local module<aclass="headerlink" href="#module-pyinfra.local" title="Permalink to this heading">¶</a></h1>
<codeclass="sig-prename descclassname"><spanclass="pre">pyinfra.local.</span></code><codeclass="sig-name descname"><spanclass="pre">include</span></code><spanclass="sig-paren">(</span><em><spanclass="n"><spanclass="pre">filename</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink" href="#pyinfra.local.include" title="Permalink to this definition">¶</a></dt>
168
+
<codeclass="sig-prename descclassname"><spanclass="pre">pyinfra.local.</span></code><codeclass="sig-name descname"><spanclass="pre">include</span></code><spanclass="sig-paren">(</span><em><spanclass="n"><spanclass="pre">filename</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span></em>, <em><spanclass="n"><spanclass="pre">data</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">dict</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink" href="#pyinfra.local.include" title="Permalink to this definition">¶</a></dt>
169
169
<dd><p>Executes a local python file within the <codeclass="docutils literal notranslate"><spanclass="pre">pyinfra.state.cwd</span></code>
<p>Additional data can be passed across files via the <codeclass="docutils literal notranslate"><spanclass="pre">data</span></code> param to parameterize tasks and is available in <codeclass="docutils literal notranslate"><spanclass="pre">host.data</span></code>. For example <cite>tasks/create_user.py</cite> could look like:</p>
<spanclass="n">name</span><spanclass="o">=</span><spanclass="sa">f</span><spanclass="s2">"Ensure </span><spanclass="si">{</span><spanclass="n">group</span><spanclass="si">}</span><spanclass="s2"> is present"</span><spanclass="p">,</span>
<spanclass="n">name</span><spanclass="o">=</span><spanclass="sa">f</span><spanclass="s2">"Ensure </span><spanclass="si">{</span><spanclass="n">user</span><spanclass="si">}</span><spanclass="s2"> is present"</span><spanclass="p">,</span>
Copy file name to clipboardExpand all lines: en/next/_sources/using-operations.rst.txt
+31Lines changed: 31 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -227,6 +227,37 @@ Including files can be used to break out operations across multiple files. Files
227
227
# Include & call all the operations in tasks/install_something.py
228
228
local.include("tasks/install_something.py")
229
229
230
+
Additional data can be passed across files via the ``data`` param to parameterize tasks and is available in ``host.data``. For example `tasks/create_user.py` could look like:
231
+
232
+
.. code:: python
233
+
234
+
from getpass import getpass
235
+
236
+
from pyinfra import host
237
+
from pyinfra.operations import server
238
+
239
+
group = host.data.get("group")
240
+
user = host.data.get("user")
241
+
242
+
server.group(
243
+
name=f"Ensure {group} is present",
244
+
group=group,
245
+
)
246
+
server.user(
247
+
name=f"Ensure {user} is present",
248
+
user=user,
249
+
group=group,
250
+
)
251
+
252
+
And and be called by other deploy scripts or tasks:
253
+
254
+
.. code:: python
255
+
256
+
from pyinfra import local
257
+
258
+
for group, user in (("admin", "Bob"), ("admin", "Joe")):
Copy file name to clipboardExpand all lines: en/next/apidoc/pyinfra.local.html
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -165,7 +165,7 @@ <h3>Navigation</h3>
165
165
<spanid="pyinfra-local-module"></span><h1>pyinfra.local module<aclass="headerlink" href="#module-pyinfra.local" title="Permalink to this heading">¶</a></h1>
<codeclass="sig-prename descclassname"><spanclass="pre">pyinfra.local.</span></code><codeclass="sig-name descname"><spanclass="pre">include</span></code><spanclass="sig-paren">(</span><em><spanclass="n"><spanclass="pre">filename</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink" href="#pyinfra.local.include" title="Permalink to this definition">¶</a></dt>
168
+
<codeclass="sig-prename descclassname"><spanclass="pre">pyinfra.local.</span></code><codeclass="sig-name descname"><spanclass="pre">include</span></code><spanclass="sig-paren">(</span><em><spanclass="n"><spanclass="pre">filename</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">str</span></span></em>, <em><spanclass="n"><spanclass="pre">data</span></span><spanclass="p"><spanclass="pre">:</span></span><spanclass="w"></span><spanclass="n"><spanclass="pre">dict</span><spanclass="w"></span><spanclass="p"><spanclass="pre">|</span></span><spanclass="w"></span><spanclass="pre">None</span></span><spanclass="w"></span><spanclass="o"><spanclass="pre">=</span></span><spanclass="w"></span><spanclass="default_value"><spanclass="pre">None</span></span></em><spanclass="sig-paren">)</span><aclass="headerlink" href="#pyinfra.local.include" title="Permalink to this definition">¶</a></dt>
169
169
<dd><p>Executes a local python file within the <codeclass="docutils literal notranslate"><spanclass="pre">pyinfra.state.cwd</span></code>
<p>Additional data can be passed across files via the <codeclass="docutils literal notranslate"><spanclass="pre">data</span></code> param to parameterize tasks and is available in <codeclass="docutils literal notranslate"><spanclass="pre">host.data</span></code>. For example <cite>tasks/create_user.py</cite> could look like:</p>
<spanclass="n">name</span><spanclass="o">=</span><spanclass="sa">f</span><spanclass="s2">"Ensure </span><spanclass="si">{</span><spanclass="n">group</span><spanclass="si">}</span><spanclass="s2"> is present"</span><spanclass="p">,</span>
<spanclass="n">name</span><spanclass="o">=</span><spanclass="sa">f</span><spanclass="s2">"Ensure </span><spanclass="si">{</span><spanclass="n">user</span><spanclass="si">}</span><spanclass="s2"> is present"</span><spanclass="p">,</span>
0 commit comments