Isso provavelmente acontecerá já que o livro nginx
modifica o arquivo /etc/nginx/nginx.conf
depois que ele foi instalado pelo apt, e o comando dpkg está avisando sobre essa mudança.
Isso também entrará em conflito com /etc/nginx/sites-available/default
.
Altere a ordem do que é aplicado quando.
Colocar a receita do passageiro acima do nginx garantirá que o repositório e os pacotes sejam instalados. Como o nginx-extras fornece seu próprio arquivo nginx.conf, ele será imediatamente substituído pela receita do nginx e será controlado a partir daí.
Sua lista de execução modificada ficaria assim:
"run_list":[
"recipe[apt]",
"recipe[passenger]",
"recipe[nginx]",
"recipe[lr-web]"
]
Diga ao Apt para responder corretamente
Você também pode tentar forçar a responder da maneira que você quer - isso tem o risco de ser um pouco agressivo demais no comportamento do apt, potencialmente afetando o resto da corrida do Chef. Eu não recomendo isso, mas você pode testá-lo e ver se funciona para o seu caso de uso.
ENV['DEBIAN_FRONTEND'] = 'noninteractive'
package 'nginx-extras' do
options '--force-yes'
options '-o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"'
action :install
end
Leia mais sobre este aqui .
Isso tem o perigo de responder dessa maneira a outros recursos e não apresentar o problema ao operador, além de ter recursos potencialmente substituídos entre si e acionar notificações indesejadas para outros recursos, como disparar uma reinicialização nginx quando uma configuração alterações de arquivos, etc.
Converter bash para o recurso apt_repository
Isso não é realmente para resolver o problema de ordenação, apenas melhor uso de recursos do Chef.
Você mostra o fornecimento de um arquivo de livro de receitas e, em seguida, executa recursos do bash para ativá-los. Isso aconteceria a cada execução, se não fosse protegido por uma instrução only_if / not_if.
O livro de receitas apt
que você está usando já tem um recurso de repositório e mudaria sua receita para parecer assim:
apt_repository 'passenger' do
uri 'https://oss-binaries.phusionpassenger.com/apt/passenger'
distribution node['lsb']['codename']
components ['main']
keyserver 'keyserver.ubuntu.com'
key '561F9B9CAC40B2F7'
end
Isto irá se comportar de uma maneira mais sã, executando os comandos do apt-get durante a execução, e a saída será praticamente a mesma:
deb https://oss-binaries.phusionpassenger.com/apt/passenger precise main
(no Ubuntu 12.04)
TL, DR:
Use a primeira solução para alterar a ordem na qual a receita está aplicando alterações nos arquivos fornecidos por dois pacotes diferentes.
Use a terceira solução para limpar o código um pouco mais.