]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-deploy.git/commitdiff
add repo install to debian
authorAlfredo Deza <alfredo.deza@inktank.com>
Wed, 12 Mar 2014 19:36:53 +0000 (15:36 -0400)
committerAlfredo Deza <alfredo.deza@inktank.com>
Wed, 12 Mar 2014 19:36:53 +0000 (15:36 -0400)
Signed-off-by: Alfredo Deza <alfredo.deza@inktank.com>
ceph_deploy/hosts/debian/__init__.py
ceph_deploy/hosts/debian/install.py

index 5a4e347d93f818040900179590c79d027bbba828..9951486a570cd7267b5c9109e6d32a5c4307c423 100644 (file)
@@ -1,6 +1,6 @@
 import mon
 import pkg
-from install import install, mirror_install
+from install import install, mirror_install, repo_install
 from uninstall import uninstall
 
 # Allow to set some information about this distro
index de9f1277809236b56decbcd950d3a610e3e937c9..91bb91fd35961b71760f56664b7578f2ea39e199 100644 (file)
@@ -131,7 +131,54 @@ def mirror_install(distro, repo_url, gpg_url, adjust_repos):
         'gdisk',
     )
 
-    for pkg in packages:
-        pkg_managers.apt(distro.conn, pkg)
-
+    pkg_managers.apt(distro.conn, packages)
     pkg_managers.apt(distro.conn, 'ceph')
+
+
+def repo_install(distro, repo_name, baseurl, gpgkey, **kw):
+    # Get some defaults
+    safe_filename = '%s.list' % repo_name.replace(' ', '-')
+    install_ceph = kw.pop('install_ceph', False)
+    baseurl = baseurl.strip('/')  # Remove trailing slashes
+
+    process.run(
+        distro.conn,
+        [
+            'wget',
+            '-O',
+            'release.asc',
+            gpgkey,
+        ],
+        stop_on_nonzero=False,
+    )
+
+    process.run(
+        distro.conn,
+        [
+            'apt-key',
+            'add',
+            'release.asc'
+        ]
+    )
+
+    distro.conn.remote_module.write_sources_list(
+        baseurl,
+        distro.codename,
+        safe_filename
+    )
+
+    if install_ceph:
+        # Before any install, make sure we have `wget`
+        pkg_managers.apt_update(distro.conn)
+        packages = (
+            'ceph',
+            'ceph-mds',
+            'ceph-common',
+            'ceph-fs-common',
+            # ceph only recommends gdisk, make sure we actually have
+            # it; only really needed for osds, but minimal collateral
+            'gdisk',
+        )
+
+        pkg_managers.apt(distro.conn, packages)
+        pkg_managers.apt(distro.conn, 'ceph')