ansible
Ansible collections and playbooks within containerized environments.This module includes functionality to:
- Initialize Ansible collections from source files with metadata extraction and templating.
- Modify role names to conform to Ansible Galaxy standards (dashes to underscores).
- Build Ansible collections into distributable `.tar.gz` archives.
- Execute Ansible playbooks with optional support for Vault secrets and inventories.
- Automate GitHub releases for built collections using GitHub tokens.
The Ansible pipeline leverages a customizable Ansible container and supports:
- Injecting playbooks, roles, templates, and modules.
- Enforcing semantic versioning for collections.
- Supporting Vault authentication via AppRole for secrets at runtime.
- Executing multiple playbooks with optional parameters and environment secrets.
Usage is built around the Dagger API and is meant for CI/CD pipelines, release automation,
or repeatable infrastructure-as-code workflows.
Installation
dagger install github.com/stuttgart-things/dagger/ansible@v0.13.0Entrypoint
Return Type
Ansible !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| ansibleContainer | Container | - | ansible container It need contain ansible |
| githubContainer | Container | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
func (m *MyModule) Example() *dagger.Ansible {
return dag.
Ansible()
}@function
def example() -> dagger.Ansible:
return (
dag.ansible()
)@func()
example(): Ansible {
return dag
.ansible()
}Types
Ansible 🔗
ansibleContainer() 🔗
Return Type
Container ! Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
ansible-containerfunc (m *MyModule) Example() *dagger.Container {
return dag.
Ansible().
AnsibleContainer()
}@function
def example() -> dagger.Container:
return (
dag.ansible()
.ansible_container()
)@func()
example(): Container {
return dag
.ansible()
.ansibleContainer()
}runCollectionBuildPipeline() 🔗
RunCollectionBuildPipeline orchestrates init, modify and build of an ansible collection
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory ! | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
run-collection-build-pipeline --src DIR_PATHfunc (m *MyModule) Example(src *dagger.Directory) *dagger.Directory {
return dag.
Ansible().
RunCollectionBuildPipeline(src)
}@function
def example(src: dagger.Directory) -> dagger.Directory:
return (
dag.ansible()
.run_collection_build_pipeline(src)
)@func()
example(src: Directory): Directory {
return dag
.ansible()
.runCollectionBuildPipeline(src)
}githubRelease() 🔗
BUILDS A GIVEN COLLECTION DIR TO A ARCHIVE FILE (.TGZ)
Return Type
Void !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| tag | String ! | - | No description provided |
| title | String ! | - | No description provided |
| group | String ! | - | No description provided |
| repo | String ! | - | No description provided |
| files | [File ! ] ! | - | No description provided |
| notes | String ! | - | No description provided |
| token | Secret ! | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
github-release --tag string --title string --group string --repo string --notes string --token env:MYSECRETfunc (m *MyModule) Example(ctx context.Context, tag string, title string, group string, repo string, files []*dagger.File, notes string, token *dagger.Secret) {
return dag.
Ansible().
GithubRelease(ctx, tag, title, group, repo, files, notes, token)
}@function
async def example(tag: str, title: str, group: str, repo: str, files: List[dagger.File], notes: str, token: dagger.Secret) -> None:
return await (
dag.ansible()
.github_release(tag, title, group, repo, files, notes, token)
)@func()
async example(tag: string, title: string, group: string, repo: string, files: File[], notes: string, token: Secret): Promise<void> {
return dag
.ansible()
.githubRelease(tag, title, group, repo, files, notes, token)
}build() 🔗
BUILDS A GIVEN COLLECTION DIR TO A ARCHIVE FILE (.TGZ)
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory ! | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
build --src DIR_PATHfunc (m *MyModule) Example(src *dagger.Directory) *dagger.Directory {
return dag.
Ansible().
Build(src)
}@function
def example(src: dagger.Directory) -> dagger.Directory:
return (
dag.ansible()
.build(src)
)@func()
example(src: Directory): Directory {
return dag
.ansible()
.build(src)
}modifyRoleIncludes() 🔗
BUILDS A GIVEN COLLECTION DIR TO A ARCHIVE FILE (.TGZ)
Return Type
Directory !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory ! | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
modify-role-includes --src DIR_PATHfunc (m *MyModule) Example(src *dagger.Directory) *dagger.Directory {
return dag.
Ansible().
ModifyRoleIncludes(src)
}@function
def example(src: dagger.Directory) -> dagger.Directory:
return (
dag.ansible()
.modify_role_includes(src)
)@func()
example(src: Directory): Directory {
return dag
.ansible()
.modifyRoleIncludes(src)
}initCollection() 🔗
INIT ANSIBLE COLLECTION STRUCTURE
Return Type
CollectionResult !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory ! | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
init-collection --src DIR_PATHfunc (m *MyModule) Example(src *dagger.Directory) *dagger.AnsibleCollectionResult {
return dag.
Ansible().
InitCollection(src)
}@function
def example(src: dagger.Directory) -> dagger.AnsibleCollectionResult:
return (
dag.ansible()
.init_collection(src)
)@func()
example(src: Directory): AnsibleCollectionResult {
return dag
.ansible()
.initCollection(src)
}getAnsibleContainer() 🔗
GetAnsibleContainer return the default image for helm
Return Type
Container ! Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
get-ansible-containerfunc (m *MyModule) Example() *dagger.Container {
return dag.
Ansible().
GetAnsibleContainer()
}@function
def example() -> dagger.Container:
return (
dag.ansible()
.get_ansible_container()
)@func()
example(): Container {
return dag
.ansible()
.getAnsibleContainer()
}execute() 🔗
EXECUTE ANSIBLE
Return Type
Boolean !Arguments
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory | - | No description provided |
| playbooks | String ! | - | No description provided |
| requirements | File | - | No description provided |
| inventory | File | - | No description provided |
| parameters | String | - | No description provided |
| vaultAppRoleId | Secret | - | No description provided |
| vaultSecretId | Secret | - | No description provided |
| vaultUrl | Secret | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
execute --playbooks stringfunc (m *MyModule) Example(ctx context.Context, playbooks string) bool {
return dag.
Ansible().
Execute(ctxplaybooks)
}@function
async def example(playbooks: str) -> bool:
return await (
dag.ansible()
.execute(playbooks)
)@func()
async example(playbooks: string): Promise<boolean> {
return dag
.ansible()
.execute(playbooks)
}CollectionResult 🔗
directory() 🔗
Return Type
Directory ! Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
init-collection --src DIR_PATH \
directoryfunc (m *MyModule) Example(src *dagger.Directory) *dagger.Directory {
return dag.
Ansible().
InitCollection(src).
Directory()
}@function
def example(src: dagger.Directory) -> dagger.Directory:
return (
dag.ansible()
.init_collection(src)
.directory()
)@func()
example(src: Directory): Directory {
return dag
.ansible()
.initCollection(src)
.directory()
}namespace() 🔗
Return Type
String ! Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
init-collection --src DIR_PATH \
namespacefunc (m *MyModule) Example(ctx context.Context, src *dagger.Directory) string {
return dag.
Ansible().
InitCollection(src).
Namespace(ctx)
}@function
async def example(src: dagger.Directory) -> str:
return await (
dag.ansible()
.init_collection(src)
.namespace()
)@func()
async example(src: Directory): Promise<string> {
return dag
.ansible()
.initCollection(src)
.namespace()
}name() 🔗
Return Type
String ! Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
init-collection --src DIR_PATH \
namefunc (m *MyModule) Example(ctx context.Context, src *dagger.Directory) string {
return dag.
Ansible().
InitCollection(src).
Name(ctx)
}@function
async def example(src: dagger.Directory) -> str:
return await (
dag.ansible()
.init_collection(src)
.name()
)@func()
async example(src: Directory): Promise<string> {
return dag
.ansible()
.initCollection(src)
.name()
}