我有一个Rails应用程序,我通过Ansible在Docker容器中部署.我的应用包括目前为止的三个容器:
docker volume create --name dbdata)volumes_fromdbdata)我的部署手册正在运行,但我必须docker volume create通过SSH在服务器上运行该命令.我喜欢通过Ansible这样做,所以我可以将一个新的应用程序实例部署到一个空容器中.
有没有办法docker volume create通过Ansible 运行,还是有其他方法可以做到这一点?我检查了Ansible Docker模块的文档,但它看起来并不像它们支持的那样volume create.除非我错过了什么?
我正在将 AWS 设置为拥有多个账户,我们的 IAM 用户在一个账户中定义,我们的资源在一个或多个其他账户中定义,并设置策略以允许用户在生产和临时账户中担任角色。我使用这篇Coinbase 博客文章作为指南。简而言之,方法是调用aws sts get-session-token以获取临时凭据(如果使用 MFA,则必须执行此操作),然后使用这些凭据来调用assume-role所需的角色。
但是,assume-role使用临时凭据的持续时间似乎不能超过一小时。当我运行这个时:
aws sts assume-role --role-arn arn:aws:iam::<REDACTED>:role/power-user --role-session-name my_session --duration <DURATION>
如果我使用的持续时间超过一小时,则会收到此错误:
An error occurred (ValidationError) when calling the AssumeRole operation: The requested DurationSeconds exceeds the 1 hour session limit for roles assumed by role chaining.
如果我的开发团队必须每小时输入一次 MFA 代币,这对我的开发团队来说将是一个困难。有没有办法获得assume-role持续一个多小时的临时凭证?
我正在开发一个 Rails 应用程序,我需要在一个Record上显示审计跟踪,其中 has_many Data。我的 Record 上有 paper_trail 和相关的 Datum 模型,它可以很好地保存它们的版本。
但是,我需要的是,每当一个或多个关联数据发生更改时,都会为 Record 创建一个版本。目前,它在每个更改的 Datum 上创建版本,但只有在 Record 的属性更改时才会创建 Record 的版本;当关联的数据发生变化时,它不会这样做。
我尝试将 touch_with_version 放在 Record 的 after_touch 回调中,如下所示:
class Record < ActiveRecord::Base
has_many :data
has_paper_trail
after_touch do |record|
puts 'touched record'
record.touch_with_version
end
end
Run Code Online (Sandbox Code Playgroud)
和
class Datum < ActiveRecord::Base
belongs_to :record, :touch => true
has_paper_trail
end
Run Code Online (Sandbox Code Playgroud)
after_touch 回调触发,但不幸的是它为每个 Datum 创建了一个新版本,因此当创建一个 Record 时,它已经有 10 个版本,每个 Datum 一个。
有没有办法在回调中判断一个版本是否已经创建,所以我不创建多个?就像检查 Record 回调之一,如果 Datum 已经触发了一个版本,就不要再做了吗?
谢谢!
我有一个正在使用Docker容器部署的Rails应用程序。我正在使用PostgreSQL作为数据库,并且正在尝试设置WAL-E以对S3存储桶进行连续备份。为此的设置涉及对postgresql.conf文件进行一些更改。
我正在使用一个postgres官方映像作为基本映像,并传递了一个postgresql.conf文件。这是我的Dockerfile:
FROM postgres:9.4
MAINTAINER David Ham <me@example.com>
RUN apt-get update -y && apt-get install -y \
git \
python-virtualenv \
python-dev \
python-pip \
libevent-dev \
pv \
lzop
RUN virtualenv /opt/wale \
&& . /opt/wale/bin/activate \
&& pip install git+https://github.com/wal-e/wal-e
COPY postgresql.conf /postgresql-wal-e/postgresql-wal-e.conf
RUN chown -R postgres:postgres /postgresql-wal-e
CMD ["postgres", "-c", "config-file=/postgresql-wal-e/postgresql-wal-e.conf"]
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?它似乎已正确复制,但这是用其官方图像配置Postgres的正确方法吗?
我有一个新的 Rails 应用程序,计划将其部署在 Docker 容器中。我们正在使用structure.sql而不是schema.rb. 在我的本地设置中(使用 docker-compose 文件,Postgres 在单独的容器中),当我运行时rails db:setup,出现以下错误:
rails aborted!
failed to execute:
psql -q -f /rails/db/structure.sql cappy_dev
Please check the output above for any errors and make sure that `psql` is installed in your PATH and has proper permissions.
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/postgresql_database_tasks.rb:99:in `run_cmd'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/postgresql_database_tasks.rb:71:in `structure_load'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:213:in `structure_load'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:226:in `load_schema'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:253:in `block in load_schema_current'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:292:in `block in each_current_configuration'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:291:in `each'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:291:in `each_current_configuration'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/tasks/database_tasks.rb:252:in `load_schema_current'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/railties/databases.rake:306:in `block (3 levels) in <top (required)>'
/usr/local/bundle/gems/activerecord-5.0.2/lib/active_record/railties/databases.rake:310:in `block (3 …Run Code Online (Sandbox Code Playgroud) 我在Terraform文件中定义我的基础设施.我非常喜欢Terraform,但我很难弄清楚如何测试.我有awspec,这非常好,并且通过AWS API对您的构建结果运行类似RSpec的测试.但有没有办法进行单元测试,比如结果terraform plan?其他人使用Terraform的工作流程是什么?
我有一个带有Rails后端和React前端的应用程序.我在Docker容器中部署它:一个用于app,一个用于postgres,一个用作数据卷容器.我有它工作,但应用程序图像文件是巨大的(3Gb!),并需要很长时间来构建.
我喜欢分手的方法.React应用程序需要一堆Node包,但仅用于开发; 一旦它全部是webpack-ed,React应用程序本质上是静态文件.Rails应用程序根本不需要Node.
我不需要生产映像中的所有开发时工具,但实际上,我觉得我需要在相同的代码库中拥有它,这样我才能(最终)建立一个可以构建的CI/CD环境应用程序并运行所有测试.有没有办法做到这一点,我有一个React/Node应用程序的容器和Rails的容器,并在运行时连接它们?
我有一个使用Devise进行身份验证的Rails应用程序.我通过通常的Rails视图进行身份验证,大多数应用程序都是使用通常的Rails ActionView页面完成的.
我的应用程序的一页包含一个React应用程序,它通过XHR使用isomorphic-fetch库来请求数据.我一直在Safari中开发它,它工作正常,但在Chrome或Firefox中,当我尝试XHR获取时,我收到HTTP 401消息.
似乎差异在于我在Safari上获得了设置会话cookie的"Set-Cookie"响应头,而在Chrome中我不是.
这是我尝试过的:*添加X-CSRF-Token到我的AJAX获取请求*设置config.http_authenticatable_on_xhr为true并设置config.navigational_format = [:html, :json]
这是一个新的Rails 5应用程序.我有一个类似的Rails 4应用程序,其中XHR工作正常.如何让我的XHR在这里工作?
Argo CD 有办法暂停全局同步吗?例如,我的公司偶尔会出现部署冻结,不允许任何人将其交付到生产环境。有没有办法在 Argo CD 中全局关闭同步以防止部署新版本的应用程序?
docker ×4
postgresql ×2
amazon-iam ×1
ansible ×1
argocd ×1
aws-sts ×1
devise ×1
kubernetes ×1
reactjs ×1
terraform ×1
unit-testing ×1