小编Cob*_*ojo的帖子

如何忽略rpm安装中的冲突

我在一个文件夹中有一堆rpm文件.我正在尝试使用以下命令安装它们: rpm -ivh *.rpm因此rpm可以处理正确的安装顺序.

在其中一些rpms中,我在我的系统中安装了更新的版本,所以我得到了例子:

package info-5.0-1 (which is newer than info-4.13a-2) is already installed

/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1

有没有办法忽略旧的.rpm文件并使用已安装的新版本解决依赖关系?我想到了--force选项.但是--force如何解决冲突?用旧版本覆盖它们还是忽略它们离开新版本?

欢迎任何想法.

unix linux aix rpm

31
推荐指数
3
解决办法
10万
查看次数

获取正在运行的剧本的pid,以在该剧本中使用

当我们运行一个启用了详细输出的剧本时,在ansible日志中,我们可以看到以下内容:

2016-02-03 12:51:58,235 p=4105 u=root | PLAY RECAP

我猜这p=4105是剧本运行时的pid。

有没有办法在运行时在剧本中获取此pid(例如,作为变量)?

linux pid ansible ansible-playbook

11
推荐指数
1
解决办法
2255
查看次数

在Ansible中构建映射时发出警告

每当我运行我的剧本时,都会出现以下警告:

[警告]:从/etc/ansible/roles/foo/tasks/main.yml第17行第3列构建映射时,发现了一个重复的dict密钥(文件).仅使用最后定义的值.

在tasks文件夹中我的main.yml的相关部分是这样的:

(第17行是清理文件的任务,看起来有点偏,所以我猜问题是以前的"脚本"行)

- name: Run script to format output
  script: foo.py {{ taskname }} /tmp/fcpout.log
- name: Clean temp files
  file: path=/tmp/fcpout.log state=absent
Run Code Online (Sandbox Code Playgroud)

我的vars文件:

---
my_dict: {SLM: "114", Regular: "255", Production: "1"}
taskid: "{{my_dict[taskname]}}"
Run Code Online (Sandbox Code Playgroud)

要运行我的剧本我做:

ansible-playbook playbooks/foo.yml --extra-vars "server=bar taskname=SLM"
Run Code Online (Sandbox Code Playgroud)

我要做的是获取命令行参数,设置hosts:使用"server"参数,获取任务名称并从中查找id引用的内容.此id用作远程运行的python脚本的第一个输入.

该剧本工作正常,但我不明白为什么我会收到警告.有人能解释这里有什么问题吗?

jinja2 command-line-arguments ansible ansible-playbook ansible-2.x

7
推荐指数
1
解决办法
1万
查看次数

如何在Ansible中为每个剧本登录单独的文件

我希望在Ansible中运行的每个剧本都具有单独的日志文件,而不是log_path中定义的单个日志文件。

据我所知,没有内置的方法可以做到这一点。所以我正在寻找聪明的“ hacks”。

更具体地说,我想在运行一个剧本之后以[剧本名称]。[date] .log的格式生成一个日志文件。

我在SO中找到了线程,但它不能满足我的需求。如果我能以某种方式动态传递剧本名称,而不仅仅是日期,那么别名将是一个解决方案。如果我只能从主日志文件中复制相关部分,而没有所有历史记录,直到复制的那一刻,查找解决方案就可以了。另外,如果您有许多并行运行的剧本,我不知道这种方法的效果如何。

有任何线索/想法吗?我想创建一个外壳脚本,该脚本将在剧本内部调用,以某种方式从主日志中“提取”相关条目并创建一个单独的脚本。但是我相信我使它变得太复杂了。

logging ansible ansible-playbook

3
推荐指数
1
解决办法
4101
查看次数