小编Dav*_*Ham的帖子

使用Ansible运行'docker volume create'?

我有一个Rails应用程序,我通过Ansible在Docker容器中部署.我的应用包括目前为止的三个容器:

  • Docker卷容器(使用时创建docker volume create --name dbdata)
  • 一个Postgres容器(带有volumes_fromdbdata)
  • Rails应用程序容器(链接到postgres容器)

我的部署手册正在运行,但我必须docker volume create通过SSH在服务器上运行该命令.我喜欢通过Ansible这样做,所以我可以将一个新的应用程序实例部署到一个空容器中.

有没有办法docker volume create通过Ansible 运行,还是有其他方法可以做到这一点?我检查了Ansible Docker模块的文档,但它看起来并不像它们支持的那样volume create.除非我错过了什么?

ansible docker

6
推荐指数
3
解决办法
3587
查看次数

AWS 假设角色的凭证持续时间超过一个小时

我正在将 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持续一个多小时的临时凭证?

amazon-web-services amazon-iam aws-sts

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

Paper Trail:每当相关模型发生变化时,都会在父级上创建一个版本?

我正在开发一个 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 已经触发了一个版本,就不要再做了吗?

谢谢!

ruby-on-rails paper-trail-gem

5
推荐指数
1
解决办法
1731
查看次数

如何从Postgres Docker映像更改postgresql.conf

我有一个正在使用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的正确方法吗?

postgresql docker

5
推荐指数
1
解决办法
1857
查看次数

使用 Structure.sql 中的架构在 Docker 中运行 `rails db:setup`

我有一个新的 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)

postgresql ruby-on-rails docker

5
推荐指数
1
解决办法
4439
查看次数

如何测试Terraform文件

我在Terraform文件中定义我的基础设施.我非常喜欢Terraform,但我很难弄清楚如何测试.我有awspec,这非常好,并且通过AWS API对您的构建结果运行类似RSpec的测试.但有没有办法进行单元测试,比如结果terraform plan?其他人使用Terraform的工作流程是什么?

automated-tests unit-testing terraform

3
推荐指数
2
解决办法
7324
查看次数

将Rails和React应用程序拆分为单独的Docker容器?

我有一个带有Rails后端和React前端的应用程序.我在Docker容器中部署它:一个用于app,一个用于postgres,一个用作数据卷容器.我有它工作,但应用程序图像文件是巨大的(3Gb!),并需要很长时间来构建.

我喜欢分手的方法.React应用程序需要一堆Node包,但仅用于开发; 一旦它全部是webpack-ed,React应用程序本质上是静态文件.Rails应用程序根本不需要Node.

我不需要生产映像中的所有开发时工具,但实际上,我觉得我需要在相同的代码库中拥有它,这样我才能(最终)建立一个可以构建的CI/CD环境应用程序并运行所有测试.有没有办法做到这一点,我有一个React/Node应用程序的容器和Rails的容器,并在运行时连接它们?

ruby-on-rails docker reactjs

2
推荐指数
1
解决办法
1414
查看次数

Rails/Devise:XHR返回401

我有一个使用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在这里工作?

ruby-on-rails devise

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

在 ArgoCD 中暂停全局同步?

Argo CD 有办法暂停全局同步吗?例如,我的公司偶尔会出现部署冻结,不允许任何人将其交付到生产环境。有没有办法在 Argo CD 中全局关闭同步以防止部署新版本的应用程序?

kubernetes argocd

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