最近我在看Ansible,并希望在项目中使用它.还有另一个工具Rundeck可以用来做各种操作工作.我对这两种工具都没有经验,这是我目前对它们的理解:
类似的观点
这两个工具都是无代理的,并使用SSH在远程服务器上执行命令
Rundeck的主要概念是Node,与Ansible的库存相同,关键思想是定义/管理/分组目标服务器
不同点
Rundeck有Job的概念,Ansible没有
Rundeck有Job Scheduler,Ansible只能通过Jenkins或Cron任务等其他工具实现这一点
默认情况下,Rundeck免费提供Web UI,但您必须支付Ansible Tower的费用
似乎Ansible和Rundeck都可用于执行配置/管理/部署工作,可能以不同的方式.所以我的问题是:
非常感谢任何建议和经验分享.
我有一个我希望全球可用的脚本.我用标准的hashbang开始了它:
#! /usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
并将其链接到我的virtualenv的bin目录:
~/environments/project/env/bin/myscript
Run Code Online (Sandbox Code Playgroud)
并将该目录添加到我的路径中.当我运行命令时:
myscript
Run Code Online (Sandbox Code Playgroud)
我的其中一个库出现导入错误.但是,如果我激活虚拟环境并运行脚本,它将按预期工作.
我已经排除了符号链接的问题(我也试过在bin文件夹中移动脚本).我也尝试用python运行脚本
python ~/environments/project/env/bin/myscript
Run Code Online (Sandbox Code Playgroud)
以前我使用的是激活环境然后运行我的脚本的脚本,但我觉得从这个文件夹运行的脚本应该与virtualenv的解释器和site-packages一起运行.任何关于为什么这可能不起作用的想法或某些方法我可以调试这个?
我一直在寻找如何使用作业依赖性布局rundeck工作流的日子.我需要做的是3 jobs
:job-1
并且job-2
计划并行运行,而job-3只会在两者完成后触发job-1
,并且job-2
.假设job-1
并且job-2
具有不同的执行时间.
我尝试使用作业状态条件来做到这一点,但似乎如果不满足条件将仅停止或失败.我的想法是暂停执行,直到所有父作业完成,然后恢复工作流程.
我正在使用ops工具Rundeck,它允许执行任意脚本.我在Web应用程序窗口小部件中输入脚本文本,并在执行时,Rundeck将其保存到临时文件并调用解释器.问题是临时文件没有ps1扩展名,Powershell拒绝执行它.
有没有办法设置Powershell来忽略扩展?
=== 2018年编辑===
Rundeck现在在作业定义中有一个选项.
我想通过curl将job.xml导入Rundeck.
尝试这样的事情:
curl -v -u admin:admin -F xmlBatch=@C:\job.xml http://XXXXXXXXXX/api/1/jobs/import
Run Code Online (Sandbox Code Playgroud)
我得到302响应,就是这样
有人可以帮我解决工作样本或帮助我创建/修改这样的样本
在我的 Rundeck 上有多个项目,这些项目下的作业是按计划触发的,有些运行几分钟到一个小时。
我想重新启动 rundeck 服务器以应用一些配置更改,而不必影响这些作业,因此我想知道每个项目中是否有任何当前正在运行的作业。
我知道我可以手动浏览每个项目并检查每个正在运行的作业,但我想立即查看所有内容。
这可能吗?
难以让属于"用户"组的用户有权访问(至少读取)项目.我已经阅读并尝试了我在互联网上找到的几个例子,似乎都没有用.
我现在需要的是:允许属于"user"组的任何用户阅读名为MYPROJECT的项目.我有这个,保存在/ etc/rundeck下名为user.aclpolicy的文件中.我等了60多秒.我也试过重启RunDeck.没运气.
我一直在:
您没有授权访问项目.联系您的管理员.(用户角色:raka,用户)
description: application access to a project
application: 'rundeck'
for:
resource:
- equals:
kind: project
deny: [create] # deny create of projects
- equals:
kind: system
allow: [read] # allow read of system info
- equals:
kind: user
deny: [admin] # allow modify user profiles
project:
- equals:
name: 'MYPROJECT'
allow: [read] # allow access
deny: [import,export,configure,delete] # deny admin actions
storage:
- deny: [read,create,update,delete] # allow access for /keys/* storage content
by:
group: user
Run Code Online (Sandbox Code Playgroud)
YAML上面有什么问题?我还检查了/ …
我正在Java程序中实现任务的工作流程.其中一项任务是在多台Linux服务器上运行一些命令.
动态确定服务器 - 从XML文件读取.我检查了Rundeck的API,但似乎我必须提前配置服务器,这不符合我的需要.
有任何想法吗?
我非常想将我的 rundeck 工作描述 (YAML) 导入/导出到 GitHub 存储库。
rundeck (2.6.4) 的 SCM 插件似乎已经准备好了,但我找不到关于如何使用它的文档很少。
当我尝试在“设置 SCM 插件:Git 导出”屏幕中对其进行配置时,出现以下错误:
Failed fetch from the repository:
https://github.com/OptionMetrics/Rundeck.git: Authentication is required but no CredentialsProvider has been registered
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个 SSH 密钥,将其上传到 GitHub,并将其存储在 rundeck 密钥存储中。然后我从配置页面引用了这个键。没运气。
谁能给我明确的指示如何使这项工作?
我创建了 Rundeck 密钥存储并在其中存储了密码
然后在内联脚本中我指定了以下内容(keys/JIRA 是 Rundeck 密码存储)
curl -XN -u user:keys/JIRA
Run Code Online (Sandbox Code Playgroud)
但是密码没有通过,认证失败,我做错了什么?
rundeck ×10
acl ×1
ansible ×1
automation ×1
curl ×1
devops ×1
git ×1
java ×1
jenkins ×1
linux ×1
powershell ×1
python ×1
virtualenv ×1