2016-03-30 22 views
5

Qualcuno ha tentato di convertire le ricette di Opsworks Chef v11 in Chef v12?Opsworks Chef 12 ricette

Im esecuzione di più pile su Chef 11 e ha deciso di avviare la conversione alcuni di loro a chef 12. Poiché AWS è sceso loro strati opsworks app, come ad esempio rails ricette strato, noi (utenti opsworks) sono ora responsabili della creazione deploy utente, git checkout repos in deploy_to, ecc.

Va tutto bene con la flessibilità e non ci sono più conflitti nello spazio dei nomi, ma ci mancano tutte le cose buone che opsworks ci ha dato gratuitamente.

Mi chiedo se qualcuno ha convertito ricette per Chef 12 e open-sourced? Altrimenti, la comunità è interessata a queste ricette? Sono abbastanza sicuro di non essere solo qui.

Grazie in anticipo!

risposta

0

Non conosco i vecchi libri di cucina OpsWorks, ma dai un'occhiata a https://github.com/poise/application_examples/ per alcuni esempi di come eseguire Rails (e più) distribuzioni utilizzando Chef semplice (funzionerà anche su OpsWorks).

+1

Grazie, questo è un buon esempio ma è molto semplice. Quando ho parlato dei vantaggi delle ricette Opsworks intendevo che la ricetta 'deploy' creerebbe una struttura di directory che imita la distribuzione capistrano ('/srv/www/app/releases', '/ srv/www/app/shared','/srv/www/app/current'), preparare l'utente 'deploy' per ogni app con il suo' ssh_key', sostituire 'database.yml' con valori corretti rispetto all'ambiente. – vlgs

+0

Potresti seguire questa strada ma non la consiglierei. La risorsa 'deploy' è più fragile di quanto valga. – coderanger

+0

Ok, grazie @coderanger! – vlgs

3

Il opsworks_ruby cookbook on the Supermarket è praticamente tutto ciò che serve. Mette anche le app nelle stesse directory (es. /srv/www/app_name/), imposta il database.yml, ecc. Ecc.

La differenza principale tra questa ricetta e altre ricette non OpsWorks è che questo estrae tutto dal programma. Configurazione OpsWorks per te. Non devi personalizzare le ricette, ma assicurati che l'app e i livelli siano denominati correttamente: creerà tutto da lì, inclusa la configurazione RDS per database.yml!

La differenza principale è che i livelli in OpsWorks non saranno "Ruby aware", quindi non avrai campi per le cose Rails-ish o Ruby-ish e invece dovrai gestirli altrove. Anche il modo in cui VAR viene caricato è un po 'diverso.

Assicuratevi inoltre di leggere sull'implementazione di AWS di Chef 12 per OpsWorks. Hanno tecnicamente in mano due libri di cucina per chef, il loro interno e il tuo. La loro gestione dell'agente è aggiornata, il caricamento degli utenti (per ssh), il monitoraggio del cablaggio, ecc. Dovrai gestire il resto.

Abbiamo sostituito le cose dal loro enorme libro di cucina con singoli libri di cucina del supermercato o semplicemente riscritto. Ad esempio, il vecchio chef 11 opsworks_initial_setup ha avuto un paio di cose attorno alle impostazioni di rete e linux modificate - l'abbiamo ricreato.

Inoltre non usa distribuire agli utenti come applicabili, per esempio:

$ ps -eo user,command USER COMMAND // snip root nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf aws opsworks-agent: master 10820 aws opsworks-agent: keep_alive of master 10820 aws opsworks-agent: statistics of master 10820 aws opsworks-agent: process_command of master 10820 deploy unicorn_rails master --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[0] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[1] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[2] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf deploy unicorn_rails worker[3] --env production --daemonize -c /srv/www/app/shared/config/unicorn.conf nginx nginx: worker process nginx nginx: worker process

solo un piccolo esempio degli stivali d'uscita di processo, ma alla radice le cose come necessario e ogni processo utilizza i propri utenti per limitare i diritti e accesso.

+0

devi specificare in opsworks per usare build-essentials, application_ruby ecc ... come dici tu nel tuo README è una dipendenza ma non se eseguirli prima nel Layer? – pjammer

+0

Installerà tutto ciò che è per te, consulta https://github.com/ajgon/opsworks_ruby/blob/fa8e605e0cbf954e73ffca736a6306cd61c037a8/recipes/setup.rb#L16 – databyte

+0

Esiste una differenza tra il caricamento del repo sul mio repo chef e il confezionamento del dipendenze e tirando da S3? Non sono stato in grado di ottenere questo lavoro dal mio repo. Continua a chiedere un libro di cucina di Windows che, naturalmente, non funziona su un AMI Linux ... – RestlessWeb

1

Penso che il modo più comune sia utilizzare il ricettario "applicazione" del supermercato: https://supermarket.chef.io/cookbooks/application/versions/4.1.6 (anch'esso basato su Poise). Attenzione: usa la versione ~ 4, hanno rimosso quasi tutte le buone funzionalità della v5.

Creerà la struttura della directory, supporta diverse strategie di implementazione e offre alcuni eventi da agganciare. Attenzione: a mio parere, la documentazione di Opsworks è semantica quando si tratta dell'argomento "deploy with opsworks and chef12": le informazioni dal gui (come repo-url ecc.) Non si trovano nell'oggetto node ma in un databag dall'applicazione. Per il debug può essere molto utile dare un'occhiata alla directory /var/chef/runs/<run-id>/ per vedere cosa è disponibile da dove. piccolo frammento che mostra l'idea:

app = search("aws_opsworks_app").first 
application "#{app['shortname']}" do 
    owner 'root' 
    group 'root' 
    repository app['app_source']['url'] 
    revision 'master' 
    path "/srv/#{app['shortname']}" 
end 

Questo creerà l'/ attuale struttura di directory stampa su /srv e checkout il codice. Nota: si potrebbe pensare che la ssh-key specificata nella GUI sia in qualche modo inserita automaticamente nella posizione corretta. Non è così, dovrai prenderti cura di te da solo. Consulta il ricettario chef11 opsworks: https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/scm_helper/libraries/git.rb

Problemi correlati