我是配置管理和部署工具的新手.我必须为我曾经掌握过的最有趣的项目之一实施持续交付/持续部署工具.
首先,单独地,我很自在AWS,我知道它是什么Ansible,它背后的逻辑和目的.我没有相同程度的理解,Docker但我明白了.我经历了很多互联网资源,但我无法了解全局.
我一直在努力的是他们如何融合在一起.使用Ansible,我可以管理我的基础设施作为代码; 构建EC2实例,安装包......我甚至可以通过拉动代码,修改配置文件和启动Web服务器来部署完整的应用程序.Docker它本身就是一个打包应用程序的工具,并确保它可以在任何部署它的地方运行.
我的问题是:
Docker(或Ansible和Docker)如何扩展持续集成流程!?
假设我们有一个源代码存储库,团队成员完成了一项功能,他们推动了他们的工作.Jenkins检测到这一点,运行所有接受/单元/集成测试套件,如果它们全部通过,则将其声明为稳定版本.Docker如何适合这里?我的意思是当团队推动他们的工作时,Jenkins是否必须在应用程序中提取编码的Docker文件源,构建应用程序的映像,启动容器并针对它运行所有测试,或者以经典方式运行测试,如果一切都很好然后它从Docker文件构建Docker镜像并将其保存在私人场所?Jenkins应该使用xyz标记最终图像吗?
Docker容器配置:
假设我们有一个Jenkins存储在某处的图像,如何处理将相同的图像部署到不同的环境,甚至是不同的配置参数(Vhosts配置,数据库主机,队列URL,S3端点等......)最灵活的是什么如何在不破坏Docker原则的情况下处理这个问题?这些配置是在构建时还是基于它的容器启动时支持在映像中,如果是这样,它们是如何注入的?
Ansible和Docker:
Ansible提供了一个Docker管理Docker容器的模块.假设我解决了上面提到的问题,当我想部署我的应用程序的新版本xtz时,我告诉Ansible从存储它的位置拉出该图像,启动应用程序容器,以便如何注入配置设置!?Ansible是否必须在运行之前登录Docker镜像(这对我来说听起来很疯狂)并且使用其Jinja2模板与经典主机相同!?如果没有,这是如何处理的?!
对不起,如果这是一个很长的问题,或者我拼错了什么,但这是我大声思考的问题.过去两周我被封锁了,我无法弄清楚正确的工作流程.我希望这能成为未来读者的参考.
请阅读您的经验和解决方案非常有用,因为这看起来像是一个常见的工作流程.先感谢您.任何帮助深表感谢.
amazon-web-services continuous-deployment continuous-delivery ansible docker
我正在使用ansible来部署我的应用程序.我已经到了想要将我的grrouted资源上传到新创建的存储桶的地步,这就是我所做的:
{{hostvars.localhost.public_bucket}}是存储桶名称,
{{client}}/{{version_id}}/assets/admin是包含多级文件夹和要上载的资产的文件夹的路径:
- s3:
aws_access_key: "{{ lookup('env','AWS_ACCESS_KEY_ID') }}"
aws_secret_key: "{{ lookup('env','AWS_SECRET_ACCESS_KEY') }}"
bucket: "{{hostvars.localhost.public_bucket}}"
object: "{{client}}/{{version_id}}/assets/admin"
src: "{{trunk}}/public/assets/admin"
mode: put
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
fatal: [x.y.z.t]: FAILED! => {"changed": false, "failed": true, "invocation": {"module_name": "s3"}, "module_stderr": "", "module_stdout": "\r\nTraceback (most recent call last):\r\n File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1468581761.67-193149771659393/s3\", line 2868, in <module>\r\n main()\r\n File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1468581761.67-193149771659393/s3\", line 561, in main\r\n upload_s3file(module, s3, bucket, obj, src, expiry, metadata, encrypt, headers)\r\n File \"/home/ubuntu/.ansible/tmp/ansible-tmp-1468581761.67-193149771659393/s3\", line 307, in upload_s3file\r\n key.set_contents_from_filename(src, encrypt_key=encrypt, headers=headers)\r\n File \"/usr/local/lib/python2.7/dist-packages/boto/s3/key.py\", line 1358, in set_contents_from_filename\r\n …Run Code Online (Sandbox Code Playgroud) amazon amazon-s3 amazon-web-services ansible ansible-playbook
我正在惊恐发作.
AWS向我发送了一封邮件,其中包括:"*我们发现您的AWS访问密钥*****************以及您的密钥是公开可用的.*"
"公开提供"是什么意思?他们是否意外地推送到Github或其他公共代码共享存储库?如果是这样,如何检查它确实存在的位置(谁做了,如何以及何时)以防止再次发生这种情况?
如何具体检查我的凭据是否未公开?我正在寻找一个具体的工作流程而不是最佳实践建议.
ansible ×2
access-keys ×1
amazon ×1
amazon-s3 ×1
cloud ×1
credentials ×1
docker ×1
security ×1