From cfa426bc18c798f3d68f1668963ab1fdf0bf92aa Mon Sep 17 00:00:00 2001 From: rainzm Date: Tue, 22 Dec 2020 20:14:48 +0800 Subject: [PATCH 1/2] feat: add keep_tmpdir options Setting 'keep_tmpdir' as true will keep tmpdir as used by executing ansible playbook for debugging --- pkg/ansibleserver/models/ansibleplaybooks_v2.go | 4 +++- pkg/ansibleserver/options/options.go | 1 + pkg/util/ansiblev2/session.go | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/ansibleserver/models/ansibleplaybooks_v2.go b/pkg/ansibleserver/models/ansibleplaybooks_v2.go index 78aebeeed2..2474a18e07 100644 --- a/pkg/ansibleserver/models/ansibleplaybooks_v2.go +++ b/pkg/ansibleserver/models/ansibleplaybooks_v2.go @@ -26,6 +26,7 @@ import ( "yunion.io/x/log" "yunion.io/x/sqlchemy" + "yunion.io/x/onecloud/pkg/ansibleserver/options" "yunion.io/x/onecloud/pkg/apis" api "yunion.io/x/onecloud/pkg/apis/ansible" "yunion.io/x/onecloud/pkg/cloudcommon/db" @@ -199,7 +200,8 @@ func (apb *SAnsiblePlaybookV2) runPlaybook(ctx context.Context, userCred mcclien PrivateKey(privateKey). Requirements(apb.Requirements). Files(files). - OutputWriter(&ansiblePlaybookOutputWriter{apb}) + OutputWriter(&ansiblePlaybookOutputWriter{apb}). + KeepTmpdir(options.Options.KeepTmpdir) man.sessions.Add(apb.Id, sess) // NOTE host state check? run only on online hosts and running guests, skip others diff --git a/pkg/ansibleserver/options/options.go b/pkg/ansibleserver/options/options.go index 3e6d59e6f1..d1caacf9e7 100644 --- a/pkg/ansibleserver/options/options.go +++ b/pkg/ansibleserver/options/options.go @@ -19,6 +19,7 @@ import common_options "yunion.io/x/onecloud/pkg/cloudcommon/options" type AnsibleServerOptions struct { common_options.CommonOptions common_options.DBOptions + KeepTmpdir bool `help:"Whether to save the tmp directory" json:"keep_tmpdir"` } var ( diff --git a/pkg/util/ansiblev2/session.go b/pkg/util/ansiblev2/session.go index ff60fda5be..1a587270fe 100644 --- a/pkg/util/ansiblev2/session.go +++ b/pkg/util/ansiblev2/session.go @@ -90,6 +90,11 @@ func (sess *Session) OutputWriter(w io.Writer) *Session { return sess } +func (sess *Session) KeepTmpdir(keep bool) *Session { + sess.keepTmpdir = keep + return sess +} + func (sess *Session) Run(ctx context.Context) (err error) { var ( tmpdir string From 6d7764550e493076b9ddfc89fbc6ad58e5a76e41 Mon Sep 17 00:00:00 2001 From: rainzm Date: Tue, 22 Dec 2020 20:16:34 +0800 Subject: [PATCH 2/2] feat: download the role to tmpdir not system role dir --- pkg/util/ansiblev2/session.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/util/ansiblev2/session.go b/pkg/util/ansiblev2/session.go index 1a587270fe..412b23dec9 100644 --- a/pkg/util/ansiblev2/session.go +++ b/pkg/util/ansiblev2/session.go @@ -192,7 +192,7 @@ func (sess *Session) Run(ctx context.Context) (err error) { // install required roles if len(requirements) > 0 { args := []string{ - "install", "-r", requirements, + "install", "-r", requirements, "-p", tmpdir, } cmd := exec.CommandContext(ctx, "ansible-galaxy", args...) stdout, _ := cmd.StdoutPipe()