在我使用Ansible的系统配置中,我不想become=yes在每个任务中指定,所以我在项目主目录中创建了以下ansible.cfg,Ansible自动以root身份运行所有内容:
[privilege_escalation]
become = True
Run Code Online (Sandbox Code Playgroud)
但随着项目的不断发展,一些新角色不应该以root身份运行.我想知道是否有可能在角色中有一些指令,该角色中的所有任务都应该以root身份运行(例如,在vars /中运行),而不是上面的全局ansible.cfg解决方案!
当我刚接触shell脚本时,我使用了很多简短的测试而不是if语句false && true.
后来我学会了使用set -e,发现我的脚本因某种原因而死了,如果我用完整的if语句替换了短测试,它们就可以工作了.现在,时间已经过去了,我仍然if只使用完整的陈述.
最有趣的是,如果我打开一个交互式shell并执行以下操作:
set -e
false && true
echo $?
Run Code Online (Sandbox Code Playgroud)
它返回1但是shell不会死!
我看到我浪费了太多代码.任何人都可以向我解释如何set -e安全地使用短测试,例如.没有剧本死亡?
我目前在Ubuntu 17.04运行泊坞窗1.12.6,我想知道,如果下的所有目录的/ var / lib中/泊坞窗应包括在我的每月备份(备份我都下/带rsnapshot,然后设置一些exclude规则) .
例如,对于 Vagrant,我从备份下载的图像及其生成的机器(.vagrant.d/boxes/和.VirtualBox /Machines/)中排除,因为它们可以随时使用各自的Vagrantfile重建。
不过,我真的不明白/var/lib/docker目录结构是如何工作的。在我的系统中是这样的:
# tree -L 2 -a -F --dirsfirst --noreport /var/lib/docker/
/var/lib/docker/
??? aufs/
? ??? diff/
? ??? layers/
? ??? mnt/
??? containers/
??? image/
? ??? aufs/
??? network/
? ??? files/
??? swarm/
??? tmp/
??? trust/
??? volumes/
??? metadata.db
Run Code Online (Sandbox Code Playgroud) 我有一个命令行应用程序,需要以交互方式向用户提问。它已经发展成为一个大项目,每次我升级我的系统时,我都不得不担心由于一些不寻常的依赖关系可能会破坏它的某些部分。
我的想法是把它打包成一个Docker容器,这样我就可以升级我的系统而不必担心这个项目的稳定性。这是我第一次尝试 Docker,我做了一些测试,但输出到日志中,我不确定如何处理用户输入。Docker 不适合这种类型的应用程序吗?
考虑以下主机文件:
[initial]
74.125.224.72 ansible_user=root
[default]
74.125.224.72 ansible_user=deploy ansible_port=2222
Run Code Online (Sandbox Code Playgroud)
我有一本名为initial.yml with的剧本hosts: initial,另一本名为site.yml with的剧本hosts: default。
问题是,如果我运行ansible-playbook initial.yml,它会在尝试以用户部署身份在端口 2222 上登录时失败。难道不应该只以用户 root 身份在端口 22 上登录吗?
initial.yml的内容(注释掉角色也没有什么区别):
---
- hosts: initial
roles:
- { role: common, tags: common }
- { role: login, tags: login }
Run Code Online (Sandbox Code Playgroud)
内容ansible.cfg:
[defaults]
inventory = ./hosts.ini
roles_path = ./.tmp
retry_files_enabled = False
Run Code Online (Sandbox Code Playgroud)
环境:
下的文件/etc/ansible/或/etc/ssh/尚未被修改。
编辑:我已经能够通过为initial.yml使用不同的主机文件并使用.yml指定它来解决此问题。ansible-playbook --inventory-file=initial.ini
考虑到这个小Python类,每当我用Ctrl+ 停止脚本时C,该__exit__函数在引发异常之前运行:
import time
class MyClass(object):
def __init__(self):
pass
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
print('------ cleanup ------')
with MyClass():
time.sleep(100)
Run Code Online (Sandbox Code Playgroud)
运行:
$ python3 test.py
^C------ cleanup ------
Traceback (most recent call last):
File "test.py", line 15, in <module>
time.sleep(100)
KeyboardInterrupt
Run Code Online (Sandbox Code Playgroud)
在类似的Chrome WebDriver子类代码中,为什么忽略我的清理功能?
import selenium
from selenium.webdriver.common.by import By
class WebDriver(selenium.webdriver.Chrome):
def __init__(self, url, *args, **kwargs):
super().__init__(*args, **kwargs)
self.url = url
def __enter__(self):
self.get(self.url)
return self
def __exit__(self, exc_type, exc_value, traceback): …Run Code Online (Sandbox Code Playgroud) ansible ×2
docker ×2
backup ×1
bash ×1
command-line ×1
containers ×1
interactive ×1
ksh ×1
python ×1
python-3.x ×1
selenium ×1
shell ×1
zsh ×1