Dagger
Search

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.0

Entrypoint

Return Type
Ansible !
Arguments
NameTypeDefault ValueDescription
ansibleContainerContainer -ansible container It need contain ansible
githubContainerContainer -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-container
func (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
NameTypeDefault ValueDescription
srcDirectory !-No description provided
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
 run-collection-build-pipeline --src DIR_PATH
func (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
NameTypeDefault ValueDescription
tagString !-No description provided
titleString !-No description provided
groupString !-No description provided
repoString !-No description provided
files[File ! ] !-No description provided
notesString !-No description provided
tokenSecret !-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:MYSECRET
func (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
NameTypeDefault ValueDescription
srcDirectory !-No description provided
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
 build --src DIR_PATH
func (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
NameTypeDefault ValueDescription
srcDirectory !-No description provided
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
 modify-role-includes --src DIR_PATH
func (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
NameTypeDefault ValueDescription
srcDirectory !-No description provided
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
 init-collection --src DIR_PATH
func (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-container
func (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
NameTypeDefault ValueDescription
srcDirectory -No description provided
playbooksString !-No description provided
requirementsFile -No description provided
inventoryFile -No description provided
parametersString -No description provided
vaultAppRoleIdSecret -No description provided
vaultSecretIdSecret -No description provided
vaultUrlSecret -No description provided
Example
dagger -m github.com/stuttgart-things/dagger/ansible@db530d4a1cbc0373f29fa75d6cf4e860cc3a07c0 call \
 execute --playbooks string
func (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 \
 directory
func (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 \
 namespace
func (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 \
 name
func (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()
}