在实时(电子商务)站点上部署新代码的最佳做法是什么?
现在重命名目录时,我已经停止阿帕奇+/-10秒public_html_new
到public_html
老来public_html_old
。在我再次启动 Apache 之前,这会造成短暂的停机时间。
如果使用 Git 将新的 repo 拉到 live 目录,也会出现同样的问题。我可以在站点处于活动状态时拉出 repo 吗?如果我还需要复制数据库呢?
在对实时站点进行 tar(备份目的)压缩期间,我注意到媒体目录中发生了变化。这向我表明文件会定期更改。如果 Apache 在部署期间没有停止,这些更改是否会干扰。
我有一个包含一台主机的清单文件:
10.1.32.123 ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
我的yaml
文件:
- hosts: all
sudo: yes
gather_facts: yes
serial: 20
roles:
Run Code Online (Sandbox Code Playgroud)
这不是yaml
我想用密码保护的文件,而是我的库存文件,因为它包含用户凭据。虽然这是不可能的,因为当我运行剧本时,清单文件中的内容不会解密。如果我对yaml
文件进行了加密,它就会这样做。
ansible-playbook inventory site.yml --ask-vault-pass
Run Code Online (Sandbox Code Playgroud)
ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
到yaml
文件中,并将 IP 保留在清单文件中。文件:
我需要一种解决方案,以便能够向一个用户添加多个 SSH“密钥”。
class user {
user { 'k':
ensure => present,
comment => 'bogo user',
home => '/home/k',
managehome => true
}
ssh_authorized_key { 'k_ssh':
user => 'k',
type => 'rsa',
key => 'AAAAB3NzaC1yc2EAAAADAQABAAABAQDk656+4Ivl5MnFBSmQw+hnsd7DsueGbZ5HbVlzE8BvYxbwlWAO5DiVw2p1qae/WLJNJDDl7unZemLApR+YkKIL6HXbCUj8V8+KHqSyE9pshMiRj/Lh2lNhZQPFbE8cc6TNY3YVSeyKY0mw8Uj4MBGWnv62DWoO5QuM17CJrD6gH1VlkCqVt8c7jSd9ijmCume5QExwlUtMjl60ZyfbTRbz16aQJNKbqdeIGKA6rB97xet1cHNZ08cCd37GqtMyMiqYwgxxaG87y9DekotLQ9Zw12gyMVgaeGuihZfIV+F6HS1vKNjiL+av+zKxWPidSjlQf2qhthnaMnfPWGjjQfJ7',
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 Ansible 检查主机,如果/vmlinuz
内核没有解析为uname -r
.
该if
条件是,虽然总是identifing即使试验机已经重新启动,重新启动和内核解析为相同的内核:
if [ $(readlink -f /vmlinuz) != /boot/vmlinuz-$(uname -r) ]; 然后回声'重启'; 否则回声'不'; 菲
- name: Check for reboot hint.
shell: if [ $(readlink -f /vmlinuz) != /boot/vmlinuz-$(uname -r) ]; then echo 'reboot'; else echo 'no'; fi
ignore_errors: true
register: reboot_hint
- name: Rebooting ...
command: shutdown -r now "Ansible kernel update applied"
async: 0
poll: 0
ignore_errors: true
when: kernelup|changed or reboot_hint.stdout.find("reboot") != -1
register: rebooting
- name: Wait for …
Run Code Online (Sandbox Code Playgroud)