Releases: apenella/go-ansible
v2.0.1
v2.0.0
Release notes
v2.0.0 (2024-04-20)
Version 2.0.0 of go-ansible introduces several disruptive changes. Read the upgrade guide carefully before proceeding with the upgrade.
BREAKING CHANGES
Note
The latest major version of go-ansible, version 2.x, introduced significant and breaking changes. If you are currently using a version prior to 2.x, please refer to the upgrade guide for detailed information on how to migrate to version 2.x.
- The Go module name has been changed from
github.com/apenella/go-ansible
github.com/apenella/go-ansible/v2
. So, you need to update your import paths to use the new module name. - The relationship between the executor and
AnsiblePlaybookCmd
/AnsibleAdhocCmd
/AnsibleInvetoryCmd
has undergone important changes.- Inversion of responsibilities: The executor is now responsible for executing external commands, while
AnsiblePlaybookCmd
,AnsibleInventoryCmd
andAnsibleAdhocCmd
have cut down their responsibilities, primarily focusing on generating the command to be executed. - Method and Attribute Removal: The following methods and attributes have been removed on
AnsiblePlaybookCmd
,AnsibleInventoryCmd
andAnsibleAdhocCmd
:- The
Run
method. - The
Exec
andStdoutCallback
attributes.
- The
- Attributes Renaming: The
Options
attribute has been renamed toPlaybookOptions
inAnsiblePlaybookCmd
,AdhocOptions
inAnsibleAdhocCmd
andInventoryOptions
inAnsibleInventoryCmd
.
- Inversion of responsibilities: The executor is now responsible for executing external commands, while
- The
Executor
interface has undergone a significant signature change. This change entails the removal of the following argumentsresultsFunc
andoptions
. The current signature is:Execute(ctx context.Context) error
. - The
github.com/apenella/go-ansible/pkg/options
package has been removed. After that deletion, the attributes fromAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
attributes have been moved to thePlaybookOptions
,AdhocOptions
andInventoryOptions
structs. - The
github.com/apenella/go-ansible/pkg/stdoutcallback
package has been removed. Its responsibilities have been absorbed by two distinc packagesgit.luolix.top/apenella/go-ansible/v2/pkg/execute/result
, which manages the output of the commands, andgit.luolix.top/apenella/go-ansible/v2/pkg/execute/stdoutcallback
that enables the setting of the stdout callback. - The constants
AnsibleForceColorEnv
andAnsibleHostKeyCheckingEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. - The functions
AnsibleForceColor
,AnsibleAvoidHostKeyChecking
andAnsibleSetEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. Use theExecutorWithAnsibleConfigurationSettings
decorator instead defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
package. - The methods
WithWrite
andWithShowduration
have been removed from theExecutorTimeMeasurement
decorator. Instead, a new method namedDuration
has been introduced for obtaining the duration of the execution. - In the
AnsiblePlaybookJSONResultsPlayTaskHostsItem
struct, the attributesStdoutLines
andStderrLines
have chnage their type from[]string
to[]interface{}
.
Fixed
- Quote properly the attributes
SCPExtraArgs
,SFTPExtraArgs
,SSHCommonArgs
,SSHExtraArgs
inAnsibleAdhocOptions
andAnsiblePlaybookOptions
structs when generating the command to be executed. #140 - When using the JSON Stdout Callback method combined with enabled verbosity in the command, it causes an error during JSON parsing. To resolve this issue, the
DefaultExecute
struct includes theQuiet
method, which removes verbosity from the executed command. #110
Added
AnsibleAdhocExecute
executor has been introduced. That executor allows you to create an executor to runansible
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/adhoc
package.AnsibleInventoryExecute
executor has been introduced. That executor allows you to create an executor to runansible-inventory
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/inventory
package.ansibleplaybook-embed-python
example to demonstrate how to usego-ansible
library along with thego-embed-python
package.ansibleplaybook-extravars
example to show how to configure extra vars when running an Ansible playbook command.ansibleplaybook-ssh
example to show how to execute an Ansible playbook using SSH as the connection method.AnsiblePlaybookExecute
executor has been introduced. That executor allows you to create an executor to runansible-playbook
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/playbook
package.Commander
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute
package. This interface defines the criteria for a struct to be compliant in generating execution commands.ErrorEnricher
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute
package. This interface defines the criteria for a struct to be compliant in enriching the error message of the command execution.Executabler
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute
package. This interface defines the criteria for a struct to be compliant in executing external commands.ExecutorEnvVarSetter
interface ingit.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
defines the criteria for a struct to be compliant in setting Ansible configuration.ExecutorQuietStdoutCallbackSetter
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/stdoutcallback
package. This interface defines the criteria for a struct to be compliant in setting an executor that accepts the stdout callback configuration and that enables theQuiet
method for Ansible executions.ExecutorStdoutCallbackSetter
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/stdoutcallback
package. This interface defines the criteria for a struct to be compliant in setting an executor that accepts the stdout callback configuration for Ansible executions.github.com/apenella/go-ansible/v2/internal/executable/os/exec
package has been introduced. This package serves as a wrapper foros.exec
.git.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
package includes theExecutorWithAnsibleConfigurationSettings
struct, which acts as a decorator that facilitates the configuration of Ansible settings within the executor.github.com/apenella/go-ansible/v2/pkg/execute/result/default
package has been introduced. This package offers the default component for printing execution results. It supersedes theDefaultStdoutCallbackResults
function that was previously defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/stdoutcallback
package.github.com/apenella/go-ansible/v2/pkg/execute/result/json
package has been introduced. This package offers the component for printing execution results from the JSON stdout callback. It supersedes theJSONStdoutCallbackResults
function that was previously defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/stdoutcallback
package.github.com/apenella/go-ansible/v2/pkg/execute/stdoutcallback
. package has been introduced and offers multiple decorators designed to set the stdout callback for Ansible executions.github.com/apenella/go-ansible/v2/pkg/execute/workflow
package has been introduced and allows you to define a workflow for executing multiple commands in a sequence.github.com/apenella/go-ansible/v2/pkg/galaxy/collection/install
package has been introduced. This package allows you to install Ansible collections from the Ansible Galaxy. Along with this package, the exampleworkflowexecute-ansibleplaybook-with-galaxy-install-collection
has been added to demonstrate how to install an Ansible collection and execute an Ansible playbook in a sequence.github.com/apenella/go-ansible/v2/pkg/galaxy/role/install
package has been introduced. This package allows you to install Ansible roles from the Ansible Galaxy. Along with this package, the exampleworkflowexecute-ansibleplaybook-with-galaxy-install-role
has been added to demonstrate how to install an Ansible role and execute an Ansible playbook in a sequence.golangci-lint
has been added to the CI/CD pipeline to ensure the code quality.NewAnsibleAdhocCmd
,NewAnsibleInventoryCmd
andNewAnsiblePlaybookCmd
functions have been introduced. These functions are responsible for creating theAnsibleAdhocCmd
,AnsibleInventoryCmd
andAnsiblePlaybookCmd
structs, respectively.Path
attribute has been added to theAnsiblePlaybookJSONResultsPlayTaskHostsItem
struct.ResultsOutputer
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/result
package. This interface defines the criteria for a struct to be compliant in printing execution results.- A utility to generate the code for the configuration package has been introduced. This utility is located in the
utils/cmd/configGenerator.go
. - The
Quiet
method has been added to theDefaultExecute
struct. This method forces to remove verbosity from the executed command.
Changed
DefaultExecute
used theString
method from theCommander
to include the command in the error message when the execution fails, instead of using the theString
method from theos/exec.Cmd
struct.- In the
AnsiblePlaybookJSONResultsPlayTaskHostsItem
struct, the attributesStdoutLines
andStderrLines
have chnage their type from[]string
to[]interface{}
. - T...
v2.0.0-rc.3
Release notes
v2.0.0-rc.3
Version 2.0.0 of go-ansible introduces several disruptive changes. Read the upgrade guide carefully before proceeding with the upgrade.
BREAKING CHANGES
Note
The latest major version of go-ansible, version 2.x, introduced significant and breaking changes. If you are currently using a version prior to 2.x, please refer to the upgrade guide for detailed information on how to migrate to version 2.x.
- The Go module name has been changed from
github.com/apenella/go-ansible
github.com/apenella/go-ansible/v2
. So, you need to update your import paths to use the new module name. - The relationship between the executor and
AnsiblePlaybookCmd
/AnsibleAdhocCmd
/AnsibleInvetoryCmd
has undergone important changes.- Inversion of responsibilities: The executor is now responsible for executing external commands, while
AnsiblePlaybookCmd
,AnsibleInventoryCmd
andAnsibleAdhocCmd
have cut down their responsibilities, primarily focusing on generating the command to be executed. - Method and Attribute Removal: The following methods and attributes have been removed on
AnsiblePlaybookCmd
,AnsibleInventoryCmd
andAnsibleAdhocCmd
:- The
Run
method. - The
Exec
andStdoutCallback
attributes.
- The
- Attributes Renaming: The
Options
attribute has been renamed toPlaybookOptions
inAnsiblePlaybookCmd
,AdhocOptions
inAnsibleAdhocCmd
andInventoryOptions
inAnsibleInventoryCmd
.
- Inversion of responsibilities: The executor is now responsible for executing external commands, while
- The
Executor
interface has undergone a significant signature change. This change entails the removal of the following argumentsresultsFunc
andoptions
. The current signature is:Execute(ctx context.Context) error
. - The
github.com/apenella/go-ansible/pkg/options
package has been removed. After that deletion, the attributes fromAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
attributes have been moved to thePlaybookOptions
,AdhocOptions
andInventoryOptions
structs. - The
github.com/apenella/go-ansible/pkg/stdoutcallback
package has been removed. Its responsibilities have been absorbed by two distinc packagesgit.luolix.top/apenella/go-ansible/v2/pkg/execute/result
, which manages the output of the commands, andgit.luolix.top/apenella/go-ansible/v2/pkg/execute/stdoutcallback
that enables the setting of the stdout callback. - The constants
AnsibleForceColorEnv
andAnsibleHostKeyCheckingEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. - The functions
AnsibleForceColor
,AnsibleAvoidHostKeyChecking
andAnsibleSetEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. Use theExecutorWithAnsibleConfigurationSettings
decorator instead defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
package. - The methods
WithWrite
andWithShowduration
have been removed from theExecutorTimeMeasurement
decorator. Instead, a new method namedDuration
has been introduced for obtaining the duration of the execution.
Fixed
- Quote properly the attributes
SCPExtraArgs
,SFTPExtraArgs
,SSHCommonArgs
,SSHExtraArgs
inAnsibleAdhocOptions
andAnsiblePlaybookOptions
structs when generating the command to be executed. #140
Added
AnsibleAdhocExecute
executor has been introduced. That executor allows you to create an executor to runansible
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/adhoc
package.AnsibleInventoryExecute
executor has been introduced. That executor allows you to create an executor to runansible-inventory
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/inventory
package.ansibleplaybook-extravars
example to show how to configure extra vars when running an Ansible playbook command.ansibleplaybook-ssh
example to show how to execute an Ansible playbook using SSH as the connection method.AnsiblePlaybookExecute
executor has been introduced. That executor allows you to create an executor to runansible-playbook
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/playbook
package.Commander
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute
package. This interface defines the criteria for a struct to be compliant in generating execution commands.Executabler
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute
package. This interface defines the criteria for a struct to be compliant in executing external commands.ExecutorEnvVarSetter
interface ingit.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
defines the criteria for a struct to be compliant in setting Ansible configuration.ExecutorStdoutCallbackSetter
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/stdoutcallback
package. This interface defines the criteria for a struct to be compliant in setting an executor that accepts the stdout callback configuration for Ansible executions.github.com/apenella/go-ansible/v2/internal/executable/os/exec
package has been introduced. This package serves as a wrapper foros.exec
.git.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
package includes theExecutorWithAnsibleConfigurationSettings
struct, which acts as a decorator that facilitates the configuration of Ansible settings within the executor.github.com/apenella/go-ansible/v2/pkg/execute/result/default
package has been introduced. This package offers the default component for printing execution results. It supersedes theDefaultStdoutCallbackResults
function that was previously defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/stdoutcallback
package.github.com/apenella/go-ansible/v2/pkg/execute/result/json
package has been introduced. This package offers the component for printing execution results from the JSON stdout callback. It supersedes theJSONStdoutCallbackResults
function that was previously defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/stdoutcallback
package.github.com/apenella/go-ansible/v2/pkg/execute/stdoutcallback
. package has been introduced and offers multiple decorators designed to set the stdout callback for Ansible executions.github.com/apenella/go-ansible/v2/pkg/execute/workflow
package has been introduced and allows you to define a workflow for executing multiple commands in a sequence.github.com/apenella/go-ansible/v2/pkg/galaxy/collection/install
package has been introduced. This package allows you to install Ansible collections from the Ansible Galaxy. Along with this package, the exampleworkflowexecute-ansibleplaybook-with-galaxy-install-collection
has been added to demonstrate how to install an Ansible collection and execute an Ansible playbook in a sequence.github.com/apenella/go-ansible/v2/pkg/galaxy/role/install
package has been introduced. This package allows you to install Ansible roles from the Ansible Galaxy. Along with this package, the exampleworkflowexecute-ansibleplaybook-with-galaxy-install-role
has been added to demonstrate how to install an Ansible role and execute an Ansible playbook in a sequence.NewAnsibleAdhocCmd
,NewAnsibleInventoryCmd
andNewAnsiblePlaybookCmd
functions have been introduced. These functions are responsible for creating theAnsibleAdhocCmd
,AnsibleInventoryCmd
andAnsiblePlaybookCmd
structs, respectively.ResultsOutputer
interface has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/result
package. This interface defines the criteria for a struct to be compliant in printing execution results.- A utility to generate the code for the configuration package has been introduced. This utility is located in the
utils/cmd/configGenerator.go
.
Changed
- The
AnsibleAdhocCmd
struct has been updated to implement theCommander
interface. - The
AnsibleInventoryCmd
struct has been updated to implement theCommander
interface. - The
AnsiblePlaybookCmd
struct has been updated to implement theCommander
interface. - The
AnsiblePlaybookOptions
andAnsibleAdhocOptions
structs have been updated to include the attributes fromAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
. - The
DefaultExecute
struct has been updated to have a new attribute namedExec
of typeExecutabler
that is responsible for executing external commands. - The
DefaultExecute
struct has been updated to have a new attribute namedOutput
of typeResultsOutputer
that is responsible for printing the execution's output. - The
DefaultExecute
struct has been updated to implement theExecutor
interface. - The
DefaultExecute
struct has been updated to implement theExecutorEnvVarSetter
interface. - The
DefaultExecute
struct has been updated to implement theExecutorStdoutCallbackSetter
interface. - The
Options
attribute inAnsibleAdhocCmd
struct has been renamed toAdhocOptions
. - The
Options
attribute inAnsibleInventoryCmd
struct has been renamed toInventoryOptions
. - The
Options
attribute inAnsiblePlaybookCmd
struct has been renamed toPlaybookOptions
. - The examples has been adapted to use executor as the component to execute Ansible commands.
- The package
github.com/apenella/go-ansible/pkg/stdoutcallback/result/transformer
has been moved github.com/apenella/go-ansible/v2/pkg/execute/result/transformer
.
Removed
- The
Exec
attribute has been removed fromAnsiblePlaybookCmd
andAdhocPlaybookCmd
. - The
github.com/apenella/go-ansible/pkg/options
package has been removed. After theAnsibleConnectionOptions
and `...
v2.0.0-rc.2
Release notes
v2.0.0-rc.2
Version 2.0.0 of go-ansible introduces several disruptive changes. Read the upgrade guide carefully before proceeding with the upgrade.
BREAKING CHANGES
Note
The latest major version of go-ansible, version 2.x, introduced significant and breaking changes. If you are currently using a version prior to 2.x, please refer to the upgrade guide for detailed information on how to migrate to version 2.x.
- The Go module name has been changed from
github.com/apenella/go-ansible
github.com/apenella/go-ansible/v2
. So, you need to update your import paths to use the new module name. - The relationship between the executor and
AnsiblePlaybookCmd
/AnsibleAdhocCmd
/AnsibleInvetoryCmd
has undergone important changes.- Inversion of responsabilities: The executor is now responsible for executing external commands, while
AnsiblePlaybookCmd
,AnsibleInventoryCmd
andAnsibleAdhocCmd
have cut down their responsibilities, primarily focusing on generating the command to be executed. - Method and Attribute Removal: The following methods and attributes have been removed on
AnsiblePlaybookCmd
,AnsibleInventoryCmd
andAnsibleAdhocCmd
:- The
Run
method. - The
Exec
andStdoutCallback
attributes.
- The
- Attributes Renaming: The
Options
attribute has been renamed toPlaybookOptions
inAnsiblePlaybookCmd
,AdhocOptions
inAnsibleAdhocCmd
andInventoryOptions
inAnsibleInventoryCmd
.
- Inversion of responsabilities: The executor is now responsible for executing external commands, while
- The
Executor
interface has undergone a significant signature change. This change entails the removal of the following argumentsresultsFunc
andoptions
. The current signature is:Execute(ctx context.Context) error
. - The
github.com/apenella/go-ansible/pkg/options
package has been removed. After that deletion, the attributes fromAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
attributes have been moved to thePlaybookOptions
,AdhocOptions
andInventoryOptions
structs. - The
github.com/apenella/go-ansible/pkg/stdoutcallback
package has been removed. Its responsibilities have been absorbed by two distinc packagesgit.luolix.top/apenella/go-ansible/v2/pkg/execute/result
, which manages the output of the commands, andgit.luolix.top/apenella/go-ansible/v2/pkg/execute/stdoutcallback
that enables the setting of the stdout callback. - The constants
AnsibleForceColorEnv
andAnsibleHostKeyCheckingEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. - The functions
AnsibleForceColor
,AnsibleAvoidHostKeyChecking
andAnsibleSetEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. Use theExecutorWithAnsibleConfigurationSettings
decorator instead defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
package. - The methods
WithWrite
andWithShowduration
have been removed from theExecutorTimeMeasurement
decorator. Instead, a new method namedDuration
has been introduced for obtaining the duration of the execution.
Added
- A new executor
AnsibleAdhocExecute
has been introduced. That executor allows you to create an executor to runansible
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/adhoc
package. - A new executor
AnsibleInventoryExecute
has been introduced. That executor allows you to create an executor to runansible-inventory
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/inventory
package. - A new executor
AnsiblePlaybookExecute
has been introduced. That executor allows you to create an executor to runansible-playbook
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/playbook
package. - A new interface
Commander
has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute
package. This interface defines the criteria for a struct to be compliant in generating execution commands. - A new interface
Executabler
has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute
package. This interface defines the criteria for a struct to be compliant in executing external commands. - A new interface
ExecutorEnvVarSetter
ingit.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
that defines the criteria for a struct to be compliant in setting Ansible configuration. - A new interface
ExecutorStdoutCallbackSetter
has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/stdoutcallback
package. This interface defines the criteria for a struct to be compliant in setting an executor that accepts the stdout callback configuration for Ansible executions. - A new interface named
ResultsOutputer
has been introduced in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/result
pacakge. This interface defines the criteria for a struct to be compliant in printing execution results. - A new package
github.com/apenella/go-ansible/v2/internal/executable/os/exec
has been introduced. This package serves as a wrapper foros.exec
. - A new package
github.com/apenella/go-ansible/v2/pkg/execute/configuration
that incldues theExecutorWithAnsibleConfigurationSettings
struct, which acts as a decorator that facilitates the configuration of Ansible settings within the executor. - A new package
github.com/apenella/go-ansible/v2/pkg/execute/result/default
has been introduced. This package offers the default component for printing execution results. It supersedes theDefaultStdoutCallbackResults
function that was previously defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/stdoutcallback
package. - A new package
github.com/apenella/go-ansible/v2/pkg/execute/result/json
has been introduced. This package offers the component for printing execution results from the JSON stdout callback. It supersedes theJSONStdoutCallbackResults
function that was previously defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/stdoutcallback
package. - A new package
github.com/apenella/go-ansible/v2/pkg/execute/stdoutcallback
. This package offers multiple decorators designed to set the stdout callback for Ansible executions. - A new package
github.com/apenella/go-ansible/v2/pkg/execute/workflow
has been introduced. This package allows you to define a workflow for executing multiple commands in a sequence. - An utility to generate the code for the configuration package has been introduced. This utility is located in the
utils/cmd/configGenerator.go
.
Changed
- The
AnsibleAdhocCmd
struct has been updated to implement theCommander
interface. - The
AnsibleInventoryCmd
struct has been updated to implement theCommander
interface. - The
AnsiblePlaybookCmd
struct has been updated to implement theCommander
interface. - The
AnsiblePlaybookOptions
andAnsibleAdhocOptions
structs have been updated to include the attributes fromAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
. - The
DefaultExecute
struct has been updated to have a new attribute namedExec
of typeExecutabler
that is responsible for executing external commands. - The
DefaultExecute
struct has been updated to have a new attribute namedOutput
of typeResultsOutputer
that is responsible for printing the execution's output. - The
DefaultExecute
struct has been updated to implement theExecutor
interface. - The
DefaultExecute
struct has been updated to implement theExecutorEnvVarSetter
interface. - The
DefaultExecute
struct has been updated to implement theExecutorStdoutCallbackSetter
interface. - The
Options
attribute inAnsibleAdhocCmd
struct has been renamed toAdhocOptions
. - The
Options
attribute inAnsibleInventoryCmd
struct has been renamed toInventoryOptions
. - The
Options
attribute inAnsiblePlaybookCmd
struct has been renamed toPlaybookOptions
. - The examples has been adapted to use executor as the component to execute Ansible commands.
- The package
github.com/apenella/go-ansible/pkg/stdoutcallback/result/transformer
has been moved github.com/apenella/go-ansible/v2/pkg/execute/result/transformer
.
Removed
- The
Exec
attribute has been removed fromAnsiblePlaybookCmd
andAdhocPlaybookCmd
. - The
github.com/apenella/go-ansible/pkg/options
package has been removed. After theAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
structs are not available anymore. - The
github.com/apenella/go-ansible/pkg/stdoutcallback
package has been removed. - The
Run
method has been removed from theAnsiblePlaybookCmd
andAdhocPlaybookCmd
structs. - The
ShowDuration
attribute in theDefaultExecute
struct has been removed. - The
StdoutCallback
attribute has been removed fromAnsiblePlaybookCmd
andAdhocPlaybookCmd
. - The constants
AnsibleForceColorEnv
andAnsibleHostKeyCheckingEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. - The functions
AnsibleForceColor
,AnsibleAvoidHostKeyChecking
andAnsibleSetEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. Use theExecutorWithAnsibleConfigurationSettings
decorator instead defined in thegit.luolix.top/apenella/go-ansible/v2/pkg/execute/configuration
package. - The methods
WithWrite
andwithshowduration
have been removed from theExecutorTimeMeasurement
decorator.
v2.0.0-rc.1
Release notes
v2.0.0-rc.1
Version 2.0.0 of go-ansible introduces several disruptive changes. Read the upgrade guide carefully before proceeding with the upgrade.
BREAKING CHANGES
Note
The latest major version of go-ansible, version 2.x, introduced significant and breaking changes. If you are currently using a version prior to 2.x, please refer to the upgrade guide for detailed information on how to migrate to version 2.x.
- The relationship between the executor and
AnsiblePlaybookCmd
/AnsibleAdhocCmd
/AnsibleInvetoryCmd
have undergone important changes.- Inversion of responsabilities: The executor is now responsible for executing external commands, while
AnsiblePlaybookCmd
,AnsibleInventoryCmd
andAnsibleAdhocCmd
have cut down its responsibilities, primarily focusing on generating the command to be executed. - Method and Attribute Removal: The following methods and attributes have been removed on
AnsiblePlaybookCmd
,AnsibleInventoryCmd
andAnsibleAdhocCmd
:- The
Run
method. - The
Exec
andStdoutCallback
attributes.
- The
- Attributes Renaming: The
Options
attribute has been renamed toPlaybookOptions
inAnsiblePlaybookCmd
,AdhocOptions
inAnsibleAdhocCmd
andInventoryOptions
inAnsibleInventoryCmd
.
- Inversion of responsabilities: The executor is now responsible for executing external commands, while
- The
Executor
interface has undergone a significant signature change. This change entails the removal of the following argumentsresultsFunc
andoptions
. The current signature is:Execute(ctx context.Context) error
. - The
github.com/apenella/go-ansible/pkg/options
package has been removed. After that deletion the attributes fromAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
attributes have been moved to thePlaybookOptions
,AdhocOptions
andInventoryOptions
structs. - The
github.com/apenella/go-ansible/pkg/stdoutcallback
package has been removed. Its responsabilities has been absorbed by two distinc packagesgit.luolix.top/apenella/go-ansible/pkg/execute/result
, which manages the output of the commands, andgit.luolix.top/apenella/go-ansible/pkg/execute/stdoutcallback
that enables the setting of the stdout callback. - The constants
AnsibleForceColorEnv
andAnsibleHostKeyCheckingEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. - The functions
AnsibleForceColor
,AnsibleAvoidHostKeyChecking
andAnsibleSetEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. - The methods
WithWrite
andwithshowduration
has been removed from theExecutorTimeMeasurement
decorator. Instead, a new method namedDuration
has been introduced for obtaining the duration of the execution.
Added
- A new executor
AnsibleAdhocExecute
has been introduced. That executor allows you to create an executor to runansible
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/pkg/execute/adhoc
package. - A new executor
AnsibleInventoryExecute
has been introduced. That executor allows you to create an executor to runansible-inventory
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/pkg/execute/inventory
package. - A new executor
AnsiblePlaybookExecute
has been introduced. That executor allows you to create an executor to runansible-playbook
commands using the default settings ofDefaultExecute
. This executor is located in thegit.luolix.top/apenella/go-ansible/pkg/execute/playbook
package. - A new interface
Commander
has been introduced in thegit.luolix.top/apenella/go-ansible/pkg/execute
package. This interface defines the criteria for a struct to be compliant in generating execution commands. - A new interface
Executabler
has been introduced in thegit.luolix.top/apenella/go-ansible/pkg/execute
package. This interface defines the criteria for a struct to be compliant in executing external commands. - A new interface
ExecutorEnvVarSetter
ingit.luolix.top/apenella/go-ansible/pkg/execute/configuration
that defines the criteria for a struct to be compliant in setting Ansible configuration. - A new interface
ExecutorStdoutCallbackSetter
has been introduced in thegit.luolix.top/apenella/go-ansible/pkg/execute/stdoutcallback
package. This interface defines the criteria for a struct to be compliant in setting an executor that accepts the stdout callback configuration for Ansible executions. - A new interface named
ResultsOutputer
has been introduced in thegit.luolix.top/apenella/go-ansible/pkg/execute/result
pacakge. This interface defines the criteria for a struct to be compliant in printing execution results. - A new package
github.com/apenella/go-ansible/internal/executable/os/exec
has been introduced. This package serves as a wrapper foros.exec
. - A new package
github.com/apenella/go-ansible/pkg/execute/configuration
that incldues theExecutorWithAnsibleConfigurationSettings
struct, which acts as a decorator that facilitates the configuration of Ansible settings within the executor. - A new package
github.com/apenella/go-ansible/pkg/execute/result/default
has been introduced. This package offers the default component for printing execution results. It supersedes theDefaultStdoutCallbackResults
function that was previously defined in thegit.luolix.top/apenella/go-ansible/pkg/stdoutcallback
package. - A new package
github.com/apenella/go-ansible/pkg/execute/result/json
has been introduced. This package offers the component for printing execution results from the JSON stdout callback. It supersedes theJSONStdoutCallbackResults
function that was previously defined in thegit.luolix.top/apenella/go-ansible/pkg/stdoutcallback
package. - A new package
github.com/apenella/go-ansible/pkg/execute/stdoutcallback
. This package offers multiple decorators designed to set the stdout callback for Ansible executions. - A new package
github.com/apenella/go-ansible/pkg/execute/workflow
has been introduced. This package allows you to define a workflow for executing multiple commands in a sequence. - An utility to generate the code for the configuration package has been introduced. This utility is located in the
utils/cmd/configGenerator.go
.
Changed
- The
AnsibleAdhocCmd
struct has been updated to implement theCommander
interface. - The
AnsibleInventoryCmd
struct has been updated to implement theCommander
interface. - The
AnsiblePlaybookCmd
struct has been updated to implement theCommander
interface. - The
AnsiblePlaybookOptions
andAnsibleAdhocOptions
structs have been updated to include the attributes fromAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
. - The
DefaultExecute
struct has been updated to have a new attribute namedExec
of typeExecutabler
that is responsible for executing external commands. - The
DefaultExecute
struct has been updated to have a new attribute namedOutput
of typeResultsOutputer
that is responsible for printing the execution's output. - The
DefaultExecute
struct has been updated to implement theExecutor
interface. - The
DefaultExecute
struct has been updated to implement theExecutorEnvVarSetter
interface. - The
DefaultExecute
struct has been updated to implement theExecutorStdoutCallbackSetter
interface. - The
Options
attribute inAnsibleAdhocCmd
struct has been renamed toAdhocOptions
. - The
Options
attribute inAnsibleInventoryCmd
struct has been renamed toInventoryOptions
. - The
Options
attribute inAnsiblePlaybookCmd
struct has been renamed toPlaybookOptions
. - The examples has been adapted to use executor as the component to execute Ansible commands.
- The package
github.com/apenella/go-ansible/pkg/stdoutcallback/result/transformer
has been moved github.com/apenella/go-ansible/pkg/execute/result/transformer
.
Removed
- The
Exec
attribute has been removed fromAnsiblePlaybookCmd
andAdhocPlaybookCmd
. - The
github.com/apenella/go-ansible/pkg/options
package has been removed. After theAnsibleConnectionOptions
andAnsiblePrivilegeEscalationOptions
structs are not available anymore. - The
github.com/apenella/go-ansible/pkg/stdoutcallback
package has been removed. - The
Run
method has been removed from theAnsiblePlaybookCmd
andAdhocPlaybookCmd
structs. - The
ShowDuration
attribute in theDefaultExecute
struct has been removed. - The
StdoutCallback
attribute has been removed fromAnsiblePlaybookCmd
andAdhocPlaybookCmd
. - The constants
AnsibleForceColorEnv
andAnsibleHostKeyCheckingEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. - The functions
AnsibleForceColor
,AnsibleAvoidHostKeyChecking
andAnsibleSetEnv
have been removed from thegit.luolix.top/apenella/go-ansible/pkg/options
package. - The methods
WithWrite
andwithshowduration
have been removed from theExecutorTimeMeasurement
decorator.
v1.3.0
v1.2.2
Release notes
v1.2.2
Changed
- Bump golang.org/x/crypto from 0.8.0 to 0.17.0
v1.2.1
Release notes
v1.2.1
Fix
- In
AnsibleConnectionOptions
, add quotes to ssh, sftp, and scp arguments when generating the command
v1.2.0
Release notes
v1.2.0
Added
- Introducing the
github.com/apenella/go-ansible/pkg/vault
package, which enables variable encryption. - Added the
github.com/apenella/go-ansible/pkg/vault/password/text
package for reading encryption passwords as plain text. - Introduced the
github.com/apenella/go-ansible/pkg/vault/password/resolve
package, which helps in resolving an encryption password. - Added the
github.com/apenella/go-ansible/pkg/vault/password/file
package for reading encryption passwords from a file. - Introduced the
github.com/apenella/go-ansible/pkg/vault/password/envvars
package, allowing the reading of encryption passwords from an environment variable. - Added the
github.com/apenella/go-ansible/pkg/vault/encrypt
package, which provides the ability to encrypt strings using thehttps://github.com/sosedoff/ansible-vault-go
package. - Included an example using
embed.FS
.