diff --git a/lib/tasks/install_certbot.rake b/lib/tasks/install_certbot.rake index d208464..822a90c 100644 --- a/lib/tasks/install_certbot.rake +++ b/lib/tasks/install_certbot.rake @@ -36,31 +36,51 @@ namespace :create_site do Net::SSH.start(@site_server.ip , @site_server.account , password: @site_server.password) do |ssh| certbot_path = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'which certbot'",false,true).strip snap_path = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'which snap'",false,true).strip + already_apt_update = false if certbot_path.blank? update_thread_infos("checking kernel version") kernel_version = exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' uname -r",false,true).strip.to_f rescue 0.0 update_thread_infos("kernel_version: #{kernel_version}") if kernel_version < 4.4 - raise "Kernel version need upgrade to >= 4.4(snap need kernel >= 4.4)" - end - if snap_path.blank? + update_thread_infos("Downloading certbot by using python3(since kernel < 4.4)...") + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' add-apt-repository ppa:deadsnakes/ppa -y",false) update_thread_infos("execing apt update...") exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' apt-get -y -o DPkg::options::='--force-confdef' -o DPkg::options::='--force-confold' update",true,false) - update_thread_infos("Installing snap...") - exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' apt install snapd -y",true,false) - snap_path = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'which snap'",false,true).strip - end - if snap_path.present? - update_thread_infos("Installing snap core...") - exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' bash -l -c 'snap install core && snap refresh core'",true,false) - update_thread_infos("Installing certbot with snap...") - exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' snap install --classic certbot",true,false) - exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' ln -s /snap/bin/certbot /usr/bin/certbot",false,false) - exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' certbot register --email bohung@rulingcom.com --agree-tos -n",false,false) + already_apt_update = true + update_thread_infos("Installing python3.6 python3.6-venv libaugeas0 ...") + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' apt-get install python3.6 python3.6-venv libaugeas0 -y",false) + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' rm -rf /opt/certbot/",false) + update_thread_infos("generating venv for certbot ...") + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' python3.6 -m venv /opt/certbot/",false) + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' /opt/certbot/bin/pip install --trusted-host pypi.python.org --upgrade pip",false) + update_thread_infos("Installing certbot on python3.6 ...") + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' /opt/certbot/bin/pip install --trusted-host pypi.python.org certbot certbot-nginx",true) + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' rm -f /usr/bin/certbot",true) + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' ln -s /opt/certbot/bin/certbot /usr/bin/certbot",true) update_thread_infos("Finish install certbot!") certbot_path = "/usr/bin/certbot" else - update_thread_infos("There was some error when installing snap!") + if snap_path.blank? + unless already_apt_update + update_thread_infos("execing apt update...") + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' apt-get -y -o DPkg::options::='--force-confdef' -o DPkg::options::='--force-confold' update",true,false) + end + update_thread_infos("Installing snap...") + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' apt install snapd -y",true,false) + snap_path = exec_ssh_command_by_sudo_and_see_output(ssh,"bash -l -c 'which snap'",false,true).strip + end + if snap_path.present? + update_thread_infos("Installing snap core...") + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' bash -l -c 'snap install core && snap refresh core'",true,false) + update_thread_infos("Installing certbot with snap...") + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' snap install --classic certbot",true,false) + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' ln -s /snap/bin/certbot /usr/bin/certbot",false,false) + exec_ssh_command_by_sudo_and_see_output(ssh,"sudo -p 'sudo password:' certbot register --email bohung@rulingcom.com --agree-tos -n",false,false) + update_thread_infos("Finish install certbot!") + certbot_path = "/usr/bin/certbot" + else + update_thread_infos("There was some error when installing snap!") + end end end if certbot_path.present?