v2.0.0-rc.3
github-actions
released this
04 Apr 05:45
·
34 commits
to master
since this release
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
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.