def get_couchdb_version(): if system.distrib_id() == 'Ubuntu' \ and (system.distrib_release() == '13.10' or system.distrib_release() == '14.04'): version = '1.5.0' else: version = '1.3.0' return version
def get_couchdb_version(): ''' Return proper CouchDB version depending on distribution. ''' version = '1.6.1' if system.distrib_id() == 'Debian' \ and (system.distrib_release().startswith('6') or system.distrib_release().startswith('7')): version = '1.5.1' return version
def get_couchdb_version(): ''' Return proper CouchDB version depending on distribution. ''' version = '1.6.0' if system.distrib_id() == 'Debian' \ and (system.distrib_release().startswith('6') or system.distrib_release().startswith('7')): version = '1.5.0' return version
def repository(name): """ Require a repository. Aimed for 3rd party repositories. *Name* currently only supports EPEL and RPMforge. Example:: from fabtools import require # RPMforge packages for CentOS 6 require.rpm.repository('rpmforge') """ name = name.lower() epel_url = 'http://download.fedoraproject.org/pub/epel' rpmforge_url = 'http://packages.sw.be/rpmforge-release/rpmforge-release' rpmforge_version = '0.5.2-2' arch = get_arch() try: release = int(str(distrib_release())) except ValueError: release = int(float(str(distrib_release()))) if release == 6: epel_version = '6-8' elif release == 5: epel_version = '5-4' if name == 'rpmforge' and arch == 'i386': arch = 'i686' supported = { 'rpmforge': { '%(arch)s' % locals(): { '6': '%(rpmforge_url)s-%(rpmforge_version)s.el6.rf.i686.rpm' % locals(), '5': '%(rpmforge_url)s-%(rpmforge_version)s.el5.rf.x86_64.rpm' % locals(), }, }, 'epel': { '%(arch)s' % locals(): { '6': '%(epel_url)s/6/%(arch)s/epel-release-%(epel_version)s.noarch.rpm' % locals(), '5': '%(epel_url)s/5/%(arch)s/epel-release-%(epel_version)s.noarch.rpm' % locals(), } }, } keys = { 'rpmforge': 'http://apt.sw.be/RPM-GPG-KEY.dag.txt', 'epel': '%(epel_url)s/RPM-GPG-KEY-EPEL-%(release)s' % locals(), } repo = supported[name][str(arch)][str(release)] key = keys[name] with settings(hide('warnings'), warn_only=True): run_as_root('rpm --import %(key)s' % locals()) run_as_root('rpm -Uh %(repo)s' % locals())
def _choose(old_style, new_style): family = distrib_family() if family == 'debian': distrib = distrib_id() at_least_trusty = (distrib == 'Ubuntu' and V(distrib_release()) >= V('14.04')) at_least_jessie = (distrib == 'Debian' and V(distrib_release()) >= V('8.0')) if at_least_trusty or at_least_jessie: return new_style else: return old_style else: raise UnsupportedFamily(supported=['debian'])
def install_nginx(): """ Install NGINX and make it use certs. """ if system.distrib_id() == 'Debian': require_file(url='http://nginx.org/packages/keys/nginx_signing.key') deb.add_apt_key('nginx_signing.key') su_delete('nginx_signing.key') url = 'http://nginx.org/packages/debian/' distrib = 'squeeze' if system.distrib_release().startswith('7'): distrib = 'wheezy' require.deb.source('nginx', url, distrib, 'nginx') require.deb.package('nginx') contents = PROXIED_SITE_TEMPLATE % { 'server_name': 'cozy', 'port': 443, 'proxy_url': 'http://127.0.0.1:9104' } require.files.file('/etc/nginx/conf.d/cozy.conf', contents=contents, use_sudo=True) service.restart('nginx') else: require.deb.ppa("ppa:nginx/stable") require.nginx.site("cozy", template_contents=PROXIED_SITE_TEMPLATE, enabled=True, port=443, proxy_url='http://127.0.0.1:9104' ) print(green("Nginx successfully installed."))
def get_couchdb_version(): if system.distrib_id() == 'Ubuntu' \ and system.distrib_release() == '13.10': version = '1.5.0' else: version = '1.3.0' return version
def install_couchdb(): ''' Install CouchDB 1.3.0 or 1.5.0 depending on the target distribution. ''' # Check if controller is already installed, . with settings(warn_only=True): result = run('curl -X GET http://127.0.0.1:5984/') is_installed = result.find('Welcome') if is_installed != -1: print(green("CouchDB is already installed")) return True packages = [ 'erlang', 'libicu-dev', 'libcurl4-openssl-dev', 'curl' ] if system.distrib_id() == 'Debian' \ and system.distrib_release().startswith('6'): packages.append('libmozjs-dev') else: packages.append('libmozjs185-dev') require.deb.packages(packages) version = get_couchdb_version() require.file( url='http://apache.crihan.fr/dist/couchdb/source/' + '%s/apache-couchdb-%s.tar.gz' % (version, version)) run('tar -xzvf apache-couchdb-%s.tar.gz' % version) with cd('apache-couchdb-%s' % version): run('./configure; make') result = sudo('make install') installed = result.find('You have installed Apache CouchDB,' + ' time to relax.') if installed == -1: print_failed('couchdb') su_delete('apache-couchdb-%s' % version) su_delete('apache-couchdb-%s.tar.gz' % version) require.users.user('couchdb', home='/usr/local/var/lib/couchdb') sudo('chown -R couchdb:couchdb /usr/local/etc/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/lib/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/log/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/run/couchdb') sudo('chmod 0770 /usr/local/etc/couchdb') sudo('chmod 0770 /usr/local/var/lib/couchdb') sudo('chmod 0770 /usr/local/var/log/couchdb') sudo('chmod 0770 /usr/local/var/run/couchdb') require.supervisor.process( 'couchdb', user='******', command='couchdb', autostart='true', environment='HOME=/usr/local/var/lib/couchdb') print(green('CouchDB %s successfully installed' % version))
def install_nginx(): ''' Install NGINX and make it use certs. ''' if system.distrib_id() == 'Debian': if not is_arm(): key_url = 'http://nginx.org/packages/keys/nginx_signing.key' require.file(url=key_url) deb.add_apt_key('nginx_signing.key') su_delete('nginx_signing.key') url = 'http://nginx.org/packages/debian/' distrib = 'squeeze' if system.distrib_release().startswith('7'): distrib = 'wheezy' elif system.distrib_release().startswith('8'): distrib = 'jessie' require.deb.source('nginx', url, distrib, 'nginx') require.deb.package('nginx') contents = PROXIED_SITE_TEMPLATE % { 'server_name': 'cozy', 'port': 443, 'proxy_url': 'http://127.0.0.1:9104' } require.files.file( '/etc/nginx/conf.d/cozy.conf', contents=contents, use_sudo=True) else: require.deb.ppa('ppa:nginx/stable') require.nginx.site( 'cozy', template_contents=PROXIED_SITE_TEMPLATE, enabled=True, port=443, proxy_url='http://127.0.0.1:9104' ) delete_if_exists('/etc/nginx/conf.d/default.conf') delete_if_exists('/etc/nginx/conf.d/example_ssl.conf') delete_if_exists('/etc/nginx/sites-enabled/default') service.restart('nginx') print(green('Nginx successfully installed.'))
def install_nginx(): ''' Install NGINX and make it use certs. ''' if system.distrib_id() == 'Debian': if not is_arm(): key_url = 'http://nginx.org/packages/keys/nginx_signing.key' require.file(url=key_url) deb.add_apt_key('nginx_signing.key') su_delete('nginx_signing.key') url = 'http://nginx.org/packages/debian/' distrib = 'squeeze' if system.distrib_release().startswith('7'): distrib = 'wheezy' elif system.distrib_release().startswith('8'): distrib = 'jessie' require.deb.source('nginx', url, distrib, 'nginx') require.deb.package('nginx') contents = PROXIED_SITE_TEMPLATE % { 'server_name': 'cozy', 'port': 443, 'proxy_url': 'http://127.0.0.1:9104' } require.files.file('/etc/nginx/conf.d/cozy.conf', contents=contents, use_sudo=True) else: require.deb.ppa('ppa:nginx/stable') require.nginx.site('cozy', template_contents=PROXIED_SITE_TEMPLATE, enabled=True, port=443, proxy_url='http://127.0.0.1:9104') delete_if_exists('/etc/nginx/conf.d/default.conf') delete_if_exists('/etc/nginx/conf.d/example_ssl.conf') delete_if_exists('/etc/nginx/sites-enabled/default') service.restart('nginx') print(green('Nginx successfully installed.'))
def ppa(name, auto_accept=True, keyserver=None): """ Require a `PPA`_ package source. Example:: from fabtools import require # Node.js packages by Chris Lea require.deb.ppa('ppa:chris-lea/node.js', keyserver='my.keyserver.com') .. _PPA: https://help.launchpad.net/Packaging/PPA """ assert name.startswith('ppa:') user, repo = name[4:].split('/', 2) # For ubuntu based distribution with their own version system # e.g. Elementary OS Luna version returned by lsb_release is 0.2.1 # which raise ValueError exception on float() call try: release = float(distrib_release()) except ValueError: release = 12.04 if release >= 12.04: repo = repo.replace('.', '_') auto_accept = '--yes' if auto_accept else '' else: auto_accept = '' if not isinstance(keyserver, basestring) and keyserver: keyserver = keyserver[0] if keyserver: keyserver = '--keyserver ' + keyserver else: keyserver = '' distrib = distrib_codename() source = '/etc/apt/sources.list.d/%(user)s-%(repo)s-%(distrib)s.list' % locals() if not is_file(source): if release >= 14.04: # add-apt-repository moved to software-properties-common in 14.04 package('software-properties-common') else: package('python-software-properties') run_as_root('add-apt-repository %(auto_accept)s %(keyserver)s %(name)s' % locals(), pty=False) update_index()
def install_couchdb(): ''' Install CouchDB 1.3.0 or 1.5.0 ''' packages = [ 'erlang', 'libicu-dev', 'libcurl4-openssl-dev', 'curl' ] if system.distrib_id() == 'Debian' \ and system.distrib_release().startswith('6'): packages.append('libmozjs-dev') else: packages.append('libmozjs185-dev') require.deb.packages(packages) version = get_couchdb_version() require_file( url='http://apache.crihan.fr/dist/couchdb/source/' + '%s/apache-couchdb-%s.tar.gz' % (version, version)) run('tar -xzvf apache-couchdb-%s.tar.gz' % version) with cd('apache-couchdb-%s' % version): run('./configure; make') result = sudo('make install') installed = result.find('You have installed Apache CouchDB,' + ' time to relax.') if installed == -1: print_failed('couchdb') su_delete('apache-couchdb-%s' % version) su_delete('rm -rf apache-couchdb-%s.tar.gz' % version) require.users.user('couchdb', home='/usr/local/var/lib/couchdb') sudo('chown -R couchdb:couchdb /usr/local/etc/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/lib/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/log/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/run/couchdb') sudo('chmod 0770 /usr/local/etc/couchdb') sudo('chmod 0770 /usr/local/var/lib/couchdb') sudo('chmod 0770 /usr/local/var/log/couchdb') sudo('chmod 0770 /usr/local/var/run/couchdb') require.supervisor.process( 'couchdb', user='******', command='couchdb', autostart='true', environment='HOME=/usr/local/var/lib/couchdb') print(green('CouchDB %s successfully installed' % version))
def capabilities(): """Test capabilities functions in new distrition For openwrt: mv /etc/banner /etc/banner.disable fab -s "/bin/ash -l -c" capabilities """ print("SYSTEM") print("======") print("Distribution: %s" % system.distrib_id()) print("Release: %s" % system.distrib_release()) print("Codename: %s" % system.distrib_codename()) print("Desc: %s" % system.distrib_desc()) print("Arch: %s" % system.get_arch()) print("Hostname: %s" % system.get_hostname())
def capabilities(): """Test capabilities functions in new distrition For openwrt: mv /etc/banner /etc/banner.disable fab -s "/bin/ash -l -c" capabilities """ print ("SYSTEM") print ("======") print("Distribution: %s" % system.distrib_id()) print("Release: %s" % system.distrib_release()) print("Codename: %s" % system.distrib_codename()) print("Desc: %s" % system.distrib_desc()) print("Arch: %s" % system.get_arch()) print("Hostname: %s" % system.get_hostname())
def ppa(name, auto_accept=True, keyserver=None): """ Require a `PPA`_ package source. Example:: from fabtools import require # Node.js packages by Chris Lea require.deb.ppa('ppa:chris-lea/node.js', keyserver='my.keyserver.com') .. _PPA: https://help.launchpad.net/Packaging/PPA """ assert name.startswith('ppa:') user, repo = name[4:].split('/', 2) release = float(distrib_release()) if release >= 12.04: repo = repo.replace('.', '_') auto_accept = '--yes' if auto_accept else '' else: auto_accept = '' if not isinstance(keyserver, basestring) and keyserver: keyserver = keyserver[0] if keyserver: keyserver = '--keyserver ' + keyserver else: keyserver = '' distrib = distrib_codename() source = '/etc/apt/sources.list.d/%(user)s-%(repo)s-%(distrib)s.list' % locals( ) if not is_file(source): if release >= 14.04: # add-apt-repository moved to software-properties-common in 14.04 package('software-properties-common') else: package('python-software-properties') run_as_root( 'add-apt-repository %(auto_accept)s %(keyserver)s %(name)s' % locals(), pty=False) update_index()
def install_couchdb(): """ Install CouchDB 1.3.0 """ packages = [ 'erlang', 'libicu-dev', 'libcurl4-openssl-dev', 'curl' ] if system.distrib_id() == "Debian" \ and system.distrib_release().startswith('6'): packages.append('libmozjs-dev') else: packages.append('libmozjs185-dev') require.deb.packages(packages) require_file(url='http://apache.crihan.fr/dist/couchdb/source/' + '1.3.0/apache-couchdb-1.3.0.tar.gz') run('tar -xzvf apache-couchdb-1.3.0.tar.gz') with cd('apache-couchdb-1.3.0'): run('./configure; make') result = sudo('make install') installed = result.find("You have installed Apache CouchDB," + \ " time to relax.") if installed == -1: print_failed("couchdb") su_delete('apache-couchdb-1.3.0') su_delete('rm -rf apache-couchdb-1.3.0.tar.gz') require.users.user("couchdb", home='/usr/local/var/lib/couchdb') sudo('chown -R couchdb:couchdb /usr/local/etc/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/lib/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/log/couchdb') sudo('chown -R couchdb:couchdb /usr/local/var/run/couchdb') sudo('chmod 0770 /usr/local/etc/couchdb') sudo('chmod 0770 /usr/local/var/lib/couchdb') sudo('chmod 0770 /usr/local/var/log/couchdb') sudo('chmod 0770 /usr/local/var/run/couchdb') require.supervisor.process('couchdb', user='******', command='couchdb', autostart='true', environment='HOME=/usr/local/var/lib/couchdb') print(green("CouchDB 1.3.0 successfully installed"))
def install_couchdb(): ''' Install CouchDB 1.3.0 or 1.5.0 depending on the target distribution. ''' # Check if controller is already installed, . with settings(warn_only=True): result = run('curl -X GET http://127.0.0.1:5984/') is_installed = result.find('Welcome') if is_installed != -1: print(green("CouchDB is already installed")) return True packages = [ 'erlang', 'libicu-dev', 'libcurl4-openssl-dev', 'curl' ] if system.distrib_id() == 'Debian' \ and system.distrib_release().startswith('6'): packages.append('libmozjs-dev') else: packages.append('libmozjs185-dev') require.deb.packages(packages) version = get_couchdb_version() require.file( url='http://apache.crihan.fr/dist/couchdb/source/' + '%s/apache-couchdb-%s.tar.gz' % (version, version)) run('tar -xzvf apache-couchdb-%s.tar.gz' % version) with cd('apache-couchdb-%s' % version): run('./configure; make') result = sudo('make install') installed = result.find('You have installed Apache CouchDB,' + ' time to relax.') if installed == -1: print_failed('couchdb') su_delete('apache-couchdb-%s' % version) su_delete('apache-couchdb-%s.tar.gz' % version)
def ppa(name, auto_accept=True, keyserver=None): """ Require a `PPA`_ package source. Example:: from fabtools import require # Node.js packages by Chris Lea require.deb.ppa('ppa:chris-lea/node.js', keyserver='my.keyserver.com') .. _PPA: https://help.launchpad.net/Packaging/PPA """ assert name.startswith('ppa:') user, repo = name[4:].split('/', 2) release = float(distrib_release()) if release >= 12.04: repo = repo.replace('.', '_') auto_accept = '--yes' if auto_accept else '' else: auto_accept = '' if not isinstance(keyserver, basestring) and keyserver: keyserver = keyserver[0] if keyserver: keyserver = '--keyserver ' + keyserver else: keyserver = '' distrib = distrib_codename() source = '/etc/apt/sources.list.d/%(user)s-%(repo)s-%(distrib)s.list' % locals() if not is_file(source): package('python-software-properties') run_as_root('add-apt-repository %(auto_accept)s %(keyserver)s %(name)s' % locals(), pty=False) update_index()
def repository(name): """ Require a repository. Aimed for 3rd party repositories. *Name* currently only supports EPEL and RPMforge. Example:: from fabtools import require # RPMforge packages for CentOS 6 require.rpm.repository('rpmforge') """ name = name.lower() epel_url = 'http://download.fedoraproject.org/pub/epel' rpmforge_url = 'http://packages.sw.be/rpmforge-release/rpmforge-release' rpmforge_version = '0.5.2-2' arch = get_arch() try: release = int(str(distrib_release())) except ValueError: release = int(float(str(distrib_release()))) if release == 6: epel_version = '6-8' elif release == 5: epel_version = '5-4' if name == 'rpmforge' and release == 6 and arch == 'i386': arch = 'i686' supported = { 'rpmforge': { '%(arch)s' % locals(): { '6': '%(rpmforge_url)s-%(rpmforge_version)s.el6.rf.%(arch)s.rpm' % locals(), '5': '%(rpmforge_url)s-%(rpmforge_version)s.el5.rf.%(arch)s.rpm' % locals(), }, }, 'rpmfusion-free': { '%(arch)s' % locals(): { '5': 'http://download1.rpmfusion.org/free/el/updates/5/i386/rpmfusion-free-release-5-1.noarch.rpm', '6': 'http://download1.rpmfusion.org/free/el/updates/6/i386/rpmfusion-free-release-6-1.noarch.rpm', } }, 'epel': { '%(arch)s' % locals(): { '6': '%(epel_url)s/6/%(arch)s/epel-release-%(epel_version)s.noarch.rpm' % locals(), '5': '%(epel_url)s/5/%(arch)s/epel-release-%(epel_version)s.noarch.rpm' % locals(), } }, } rpmfusion_extra = '' if release == 6: rpmfusion_extra = '-6' keys = { 'rpmforge': 'http://apt.sw.be/RPM-GPG-KEY.dag.txt', 'rpmfusion-free': "http://rpmfusion.org/keys?action=AttachFile&do=view&target=RPM-GPG-KEY-rpmfusion-free-el%(rpmfusion_extra)s" % locals(), 'epel': '%(epel_url)s/RPM-GPG-KEY-EPEL-%(release)s' % locals(), } repo = supported[name][str(arch)][str(release)] key = keys[name] with settings(hide('running', 'warnings', 'stderr', 'stdout'), warn_only=True): run_as_root('rpm --import %(key)s' % locals()) run_as_root('rpm -Uh %(repo)s' % locals())