2012-03-06 13 views
47

estoy aprendiendo Chef y voy a hacer ahora mismo para Ubuntu:¿Cuál es la forma correcta de hacer add-apt-repository vía Chef?

execute "add-apt-repository ppa:#{node[:some_repo]}" do 
    user "root" 
end 

execute "apt-get update" do 
    user "root" 
end 

pero puede ser que hay una manera de hacerlo mejor ("al estilo de chef"?). Además, me preocupaba que a veces add-apt-repository espere la tecla "Enter" en su ejecución, por lo que este enfoque podría no funcionar como está. ¿Cuál es la forma correcta de hacerlo?

Editar: sólo tengo enlace ppa en formato: ppa: algo/usuario

Respuesta

62

Si utiliza chef v12.9 y superior, utilizar el recurso apt_repository para gestionar repositorios de apt. Si usa un chef inferior a v12.8, puede usar APT Cookbook provided by Chef Software, Inc. Este libro de cocina ofrece misma LWRP El siguiente es el ejemplo de uso del recurso:

apt_repository "nginx-php" do 
    uri "http://ppa.launchpad.net/nginx/php5/ubuntu" 
    distribution node['lsb']['codename'] 
    components ["main"] 
    keyserver "keyserver.ubuntu.com" 
    key "C300EE8C" 
end 
+2

Cómo averiguar lo que es servidor de claves y la clave si solo tiene nombre/nombre de usuario de PPA? – Artem

+0

No sé cómo podría obtener la clave, pero el servidor de claves estoy casi seguro de que es el mismo que el anterior: "keyserver.ubuntu.com" –

+0

El PPA tendrá información sobre el servidor de claves y la clave para usar. – jtimberman

16

También hay un libro de cocina apta terceros que proporciona un método ppa:

ppa "user/repo" 

https://github.com/sometimesfood/chef-apt-repo

Idealmente esta funcionalidad debe agregarse al libro de cocina opscode apt.

+0

¿Qué funcionalidad tiene el método ppa sobre el apt_repository LWRP mencionado en la respuesta anterior de Leo Gamas? – DonBecker

+0

Solíamos construir nuestra propia casa también. Y recientemente lo movió todo para utilizar el libro de cocina de la comunidad. Hay demasiados casos extremos en torno a la aptitud y el descubrimiento eficiente de los repositorios.:) En este caso, solo debe proporcionar la URL completa del launchpad al repositorio y no solo 'user/repo' y funcionará con' apt_repository'. – Till

2

Una nota adicional es que una vez que haya agregado el libro de cocina apta debe agregar un comunicado la dependencia a su libro de cocina. actualización metadata.rb (debe estar en la base de su libro de cocina dir)

depends 'apt', '>= 2.7.0' 

Esto evitará que el modo de fallo en un nodo no puede actualizar porque no tiene el libro de cocina apto en que es runlist.

5

Agregando otra respuesta ya que acabo de encontrarme aquí. Si sólo tiene la dirección URL de una llave y no la armadura puede simplemente especificar la dirección URL en el atributo clave:

apt_repository 'some_repo' do 
    uri   'http://some_url/ubuntu/precise/amd64/' 
    arch   'amd64' 
    distribution 'precise' 
    components ['contrib'] 
    key   'https://some_key_url.com/debian/release.key' 
end 

De the documentation

Cuestiones relacionadas