我在运行 CentOS 的服务器上定义了一个 iptables 规则集。我是否保证/我可以保证/我如何保证当网络上线时(在机器启动时或重新启动网络服务后)iptables 规则集已经应用(如果 iptables 无法启动或未能应用规则集)网络接口将无法出现)?
(我知道这是一个菜鸟问题,但我从来没有在任何东西上运行服务器,除了伪装的 DHCP NAT 和防火墙后面的可信网络,所以......期待菜鸟的菜鸟问题。)
我正在本地 VM 上测试综合 gitlab。禁用匿名注册后,我尝试通过/admin/users/new页面添加一个新用户。
它要求我将电子邮件与新用户帐户相关联,并且不允许我指定密码,而是说:
将生成重置链接并发送给用户。
用户将被迫在首次登录时设置密码。
现在,这在摘要中很好,但我不想只需要配置、强化和维护单独的邮件服务器,以便 gitlab 可以发送这些电子邮件。这台机器的用户很少,我可以手动管理他们(即如果他们忘记了密码,他们可以直接给我发电子邮件)。
有什么方法可以让我在不涉及电子邮件的情况下简单地创建帐户和分配密码?
值得一提的是,虽然我确实发现了这一点,这很好,但我仍然不想让 gmail 或 mailgun 参与其中,尽管它们很容易设置。
进一步来说...
确实,不一定要保持所有内容都是最新的 - 最重要的是自动测试并更新非关键任务包中的安全补丁(并通过更严格的测试对关键任务补丁进行测试)。
我知道太空行走和纸浆,但出于多种原因(劣质文档,事实是它需要丑陋的黑客来避免不必要地下载整个大型存储库,无论您在给定系统上有什么),我已经将它们排除在选项之外。我们确实使用了 Puppet,但就其本身而言,它不是适合这项工作的工具,在这里。
yum单独当然有一些我需要的东西,但是(除非我遗漏了某些东西)它,(单独)也不是真正适合这项工作的工具。目前,我也在寻找工头,但我不确定这是否是合适的地方,而且我知道它提供的大部分功能实际上并不是为了解决此类问题。
我知道可以通过以下几行将任务/处理程序文件包含在其他类似文件中
- name: Configure django
include: django.yml
- name: Configure nginx reverse proxy
include: nginx.yml
Run Code Online (Sandbox Code Playgroud)
但是根据文档,对于vars/或下的文件似乎不存在此功能defaults/。我面临的问题是,我有很多变量从根本上修改了角色的不同方面,但是所有变量只是defaults/main.yml使用注释(例如# BEGIN RoR config vars... # END RoR config vars)在同一文件 ( ) 中分为不同部分。
它非常丑陋和笨拙,但更重要的是它不是模块化的,它使得维护它变得更加困难。
编辑:由于有人投票关闭,因为他们觉得这不清楚......
这类似于我所拥有的(全部在一个文件中):
## Database variables
database:
user: bob
pass: bobs_pass
host: dbhost
## Server variable
server:
su_user: nobody
max_connections: 50
Run Code Online (Sandbox Code Playgroud)
给出 ls -R 输出:
./defaults/main.yml
Run Code Online (Sandbox Code Playgroud)
这就是我希望拥有的:
- name: Include database vars
include: database.yml
- name: Include app server vars …Run Code Online (Sandbox Code Playgroud) 运行 ansible 任务(带有script操作)时,我收到此错误消息:
stderr: OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 2
Shared connection to 10.0.2.222 closed.
Run Code Online (Sandbox Code Playgroud)
现在,在此之前有一堆针对同一主机的任务,它们都运行良好。我知道是客户端,因为客户端是 Debian;提供的东西是 Centos。
当我尝试查找此错误消息时,我发现(令我懊恼的是)我得到的通常是针对其他问题的较长消息的第一部分。我尝试添加
Host 10.0.2.222
ControlMaster no
Run Code Online (Sandbox Code Playgroud)
一开始我/etc/ssh/ssh_config因为这个问题纯粹是出于绝望,但它没有用,我真的不知道出了什么问题;我对 SSH 的工作原理知之甚少,甚至无法找出最可能的罪魁祸首是什么。
理想情况下,我希望能够执行以下操作:
- include: deregister_from_loadbalancer.yml
delegate_to: loadbalancer
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我仍然可以访问我正在运行整个游戏的主机的变量,但是负载均衡器主机上正在执行操作。
我不能只是将其分解为单独的游戏,因为我一次将机器从负载平衡器轮换中取出。分成多个剧本意味着:
- hosts: loadbalancers
tasks:
- include: remove_from_loadbalancer.yml
vars:
machine: "{{ item }}"
with_items: "{{ groups['webservers'] }}"
# at this point in the play I'm being fired for gross incompetence
- hosts: webservers
tasks:
# ... update them
- hosts: loadbalancers
tasks:
- include: add_to_loadbalancer.yml
vars:
machine: "{{ item }}"
with_items: "{{ groups['webservers'] }}"
Run Code Online (Sandbox Code Playgroud) 所以,澄清一下,我知道我可以使用为数据库编写的工具转储数据库,这些工具对 azure 一无所知。
我知道我可以做一个导入/导出。
但我想要的比这简单得多。我不需要能够备份到最近十年的任意时间点;我只需要正常的时间点保留期,以及对特定时刻(可能需要停机进行完整备份)进行快照并在正常保留期结束后保留该特定备份的能力。
在 AWS 中,我使用 RDS 快照实现了这一点。我已经做了很多谷歌搜索和阅读 Azure 文档。这似乎是一个非常基本和基本的功能。令我惊讶的是我还没有找到它,但我给微软带来了怀疑的好处,并假设他们已经实现了该功能,而我只是(不知何故)无法找到它。
据我所知, ansible 只在 tasks 级别进行错误处理,这对于我希望它能够做的事情来说真的不够。
具体来说,我的用例是一个普通的部署,所以我需要做的是:
除了我希望能奏效的错误处理方法之外,一切都很好。
- include: deploy.yml
ignore_errors: yes
register: deploy
- include: rollback.yml
when: deploy | failed
Run Code Online (Sandbox Code Playgroud)
......没有。
现在,我可以理解为什么它不会 - 包含任务只会测试它是否可以包含文件,而不是它包含的文件是否可以运行完成。我已经接受了这一点。
不幸的是,这让我陷入了困境。每个操作的自动错误检查,结合高级操作库,是我使用 ansible 的全部原因。但是,在没有成熟的恢复机制的情况下,收到故障通知就不再有用了。
任何人都有(理智的)解决方法?我可以include为它下的每个任务添加一个处理程序,并尝试让它以这种方式工作,但是......真的吗?那不可能是解决方案——或者,更确切地说,我不能继续对人性抱有信心并让它成为解决方案。