Skip to content
This repository has been archived by the owner on Feb 13, 2023. It is now read-only.

Windows provisioning hangs ... #101

Closed
danryu opened this issue May 18, 2015 · 20 comments
Closed

Windows provisioning hangs ... #101

danryu opened this issue May 18, 2015 · 20 comments
Labels

Comments

@danryu
Copy link

danryu commented May 18, 2015

Having followed the readme precisely, and just set up default config ... my provisioning is just hanging for about 30-40 minutes after "vagrant up".

For clarity I'll include the whole output... Any ideas on this?

user1@5E161994H ~/git/drupal-vm
$ vagrant up
Bringing machine 'drupaldev' up with 'virtualbox' provider...
==> drupaldev: Importing base box 'geerlingguy/ubuntu1404'...
==> drupaldev: Matching MAC address for NAT networking...
==> drupaldev: Checking if box 'geerlingguy/ubuntu1404' is up to date...
==> drupaldev: Setting the name of the VM: drupalvm.dev
==> drupaldev: Pruning invalid NFS exports.
==> drupaldev: Clearing any previously set network interfaces...
==> drupaldev: Preparing network interfaces based on configuration...
    drupaldev: Adapter 1: nat
    drupaldev: Adapter 2: hostonly
==> drupaldev: Forwarding ports...
    drupaldev: 22 => 2222 (adapter 1)
==> drupaldev: Running 'pre-boot' VM customizations...
==> drupaldev: Booting VM...
==> drupaldev: Waiting for machine to boot. This may take a few minutes...
    drupaldev: SSH address: 127.0.0.1:2222
    drupaldev: SSH username: vagrant
    drupaldev: SSH auth method: private key
    drupaldev: Warning: Connection timeout. Retrying...
==> drupaldev: Machine booted and ready!
==> drupaldev: Checking for guest additions in VM...
==> drupaldev: Checking for host entries
==> drupaldev: adding to (C:/Windows/system32/drivers/etc/hosts) : 192.168.88.88  drupalvm.dev  # VAGRANT: b1738297c717627d9027f409005d0de4 (drupaldev) / d84f6a24-98bb-4300-84ad-49f3ae7776e8
==> drupaldev: adding to (C:/Windows/system32/drivers/etc/hosts) : 192.168.88.88  xhprof.drupalvm.dev  # VAGRANT: b1738297c717627d9027f409005d0de4 (drupaldev) / d84f6a24-98bb-4300-84ad-49f3ae7776e8
==> drupaldev: adding to (C:/Windows/system32/drivers/etc/hosts) : 192.168.88.88  pimpmylog.drupalvm.dev  # VAGRANT: b1738297c717627d9027f409005d0de4 (drupaldev) / d84f6a24-98bb-4300-84ad-49f3ae7776e8
==> drupaldev: Setting hostname...
==> drupaldev: Configuring and enabling network interfaces...
==> drupaldev: Exporting NFS shared folders...
==> drupaldev: Preparing to edit nfs mounting file.
[NFS] Status: halted
[NFS] Start: started
==> drupaldev: Mounting NFS shared folders...
==> drupaldev: Mounting shared folders...
    drupaldev: /vagrant => C:/cygwin64/home/garton01/git/drupal-vm
==> drupaldev: Running provisioner: shell...
    drupaldev: Running: C:/cygwin64/tmp/vagrant-shell20150518-3116-1qgp20t.sh
==> drupaldev: stdin: is not a tty
==> drupaldev: - downloading role 'firewall', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-firewall/archive/1.0.5.tar.gz
==> drupaldev: - extracting geerlingguy.firewall to /etc/ansible/roles/geerlingguy.firewall
==> drupaldev: - geerlingguy.firewall was installed successfully
==> drupaldev: - downloading role 'git', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-git/archive/1.0.4.tar.gz
==> drupaldev: - extracting geerlingguy.git to /etc/ansible/roles/geerlingguy.git
==> drupaldev: - geerlingguy.git was installed successfully
==> drupaldev: - downloading role 'apache', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-apache/archive/1.3.1.tar.gz
==> drupaldev: - extracting geerlingguy.apache to /etc/ansible/roles/geerlingguy.apache
==> drupaldev: - geerlingguy.apache was installed successfully
==> drupaldev: - downloading role 'memcached', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-memcached/archive/1.0.2.tar.gz
==> drupaldev: - extracting geerlingguy.memcached to /etc/ansible/roles/geerlingguy.memcached
==> drupaldev: - geerlingguy.memcached was installed successfully
==> drupaldev: - downloading role 'mysql', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-mysql/archive/1.5.0.tar.gz
==> drupaldev: - extracting geerlingguy.mysql to /etc/ansible/roles/geerlingguy.mysql
==> drupaldev: - geerlingguy.mysql was installed successfully
==> drupaldev: - downloading role 'php', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-php/archive/1.5.0.tar.gz
==> drupaldev: - extracting geerlingguy.php to /etc/ansible/roles/geerlingguy.php
==> drupaldev: - geerlingguy.php was installed successfully
==> drupaldev: - downloading role 'php-pecl', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-php-pecl/archive/1.1.0.tar.gz
==> drupaldev: - extracting geerlingguy.php-pecl to /etc/ansible/roles/geerlingguy.php-pecl
==> drupaldev: - geerlingguy.php-pecl was installed successfully
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - downloading role 'php-memcached', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-php-memcached/archive/1.0.1.tar.gz
==> drupaldev: - extracting geerlingguy.php-memcached to /etc/ansible/roles/geerlingguy.php-memcached
==> drupaldev: - geerlingguy.php-memcached was installed successfully
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - downloading role 'php-mysql', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-php-mysql/archive/1.1.4.tar.gz
==> drupaldev: - extracting geerlingguy.php-mysql to /etc/ansible/roles/geerlingguy.php-mysql
==> drupaldev: - geerlingguy.php-mysql was installed successfully
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - downloading role 'php-xdebug', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-php-xdebug/archive/1.1.3.tar.gz
==> drupaldev: - extracting geerlingguy.php-xdebug to /etc/ansible/roles/geerlingguy.php-xdebug
==> drupaldev: - geerlingguy.php-xdebug was installed successfully
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - downloading role 'php-xhprof', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-php-xhprof/archive/1.0.0.tar.gz
==> drupaldev: - extracting geerlingguy.php-xhprof to /etc/ansible/roles/geerlingguy.php-xhprof
==> drupaldev: - geerlingguy.php-xhprof was installed successfully
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - dependency geerlingguy.php-pecl is already installed, skipping.
==> drupaldev: - downloading role 'phpmyadmin', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-phpmyadmin/archive/1.1.1.tar.gz
==> drupaldev: - extracting geerlingguy.phpmyadmin to /etc/ansible/roles/geerlingguy.phpmyadmin
==> drupaldev: - geerlingguy.phpmyadmin was installed successfully
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - dependency geerlingguy.php-mysql is already installed, skipping.
==> drupaldev: - dependency geerlingguy.mysql is already installed, skipping.
==> drupaldev: - dependency geerlingguy.apache is already installed, skipping.
==> drupaldev: - downloading role 'pimpmylog', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-pimpmylog/archive/1.0.0.tar.gz
==> drupaldev: - ex
==> drupaldev: tracting geerlingguy.pimpmylog to /etc/ansible/roles/geerlingguy.pimpmylog
==> drupaldev: - geerlingguy.pimpmylog was installed successfully
==> drupaldev: - downloading role 'composer', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-composer/archive/1.0.4.tar.gz
==> drupaldev: - extracting geerlingguy.composer to /etc/ansible/roles/geerlingguy.composer
==> drupaldev: - geerlingguy.composer was installed successfully
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - downloading role 'drupal-console', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-drupal-console/archive/1.0.0.tar.gz
==> drupaldev: - extracting geerlingguy.drupal-console to /etc/ansible/roles/geerlingguy.drupal-console
==> drupaldev: - geerlingguy.drupal-console was installed successfully
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - downloading role 'drush', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-drush/archive/1.0.4.tar.gz
==> drupaldev: - extracting geerlingguy.drush to /etc/ansible/roles/geerlingguy.drush
==> drupaldev: - geerlingguy.drush was installed successfully
==> drupaldev: - dependency geerlingguy.composer is already installed, skipping.
==> drupaldev: - dependency geerlingguy.php is already installed, skipping.
==> drupaldev: - dependency geerlingguy.git is already installed, skipping.
==> drupaldev: - downloading role 'daemonize', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-daemonize/archive/1.0.0.tar.gz
==> drupaldev: - extracting geerlingguy.daemonize to /etc/ansible/roles/geerlingguy.daemonize
==> drupaldev: - geerlingguy.daemonize was installed successfully
==> drupaldev: - downloading role 'mailhog', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-mailhog/archive/1.0.1.tar.gz
==> drupaldev: - extracting geerlingguy.mailhog to /etc/ansible/roles/geerlingguy.mailhog
==> drupaldev: - geerlingguy.mailhog was installed successfully
==> drupaldev: - dependency geerlingguy.daemonize is already installed, skipping.
==> drupaldev: - downloading role 'java', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-java/archive/1.1.0.tar.gz
==> drupaldev: - extracting geerlingguy.java to /etc/ansible/roles/geerlingguy.java
==> drupaldev: - geerlingguy.java was installed successfully
==> drupaldev: - downloading role 'solr', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-solr/archive/2.0.1.tar.gz
==> drupaldev: - extracting geerlingguy.solr to /etc/ansible/roles/geerlingguy.solr
==> drupaldev: - geerlingguy.solr was installed successfully
==> drupaldev: - downloading role 'security', owned by geerlingguy
==> drupaldev: - downloading role from https://github.com/geerlingguy/ansible-role-security/archive/1.0.3.tar.gz
==> drupaldev: - extracting geerlingguy.security to /etc/ansible/roles/geerlingguy.security
==> drupaldev: - geerlingguy.security was installed successfully
==> drupaldev: Running Ansible provisioner defined in Vagrantfile.
==> drupaldev:
==> drupaldev: PLAY [all] ********************************************************************
==> drupaldev:
==> drupaldev: GATHERING FACTS ***************************************************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [Update apt cache if needed.] *******************************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [Get software for Python-based control.] ********************************
==> drupaldev: changed: [localhost] => (item=curl,python-apt,python-pycurl,build-essential)
==> drupaldev:
==> drupaldev: TASK: [Disable the ufw firewall (since we use a simple iptables firewall).] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [Install postfix so Drupal can send emails.] ****************************
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [Add repository for PHP 5.5.] *******************************************
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [Add repository for PHP 5.6.] *******************************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [Add repository for PHP 7.0.] *******************************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.firewall | Ensure iptables is installed (RedHat).] *********
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.firewall | Ensure iptables is installed (Debian).] *********
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.firewall | Flush iptables the first time playbook runs.] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.firewall | Copy firewall script into place.] ***************
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.firewall | Copy firewall init script into place.] **********
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.firewall | Ensure the firewall is enabled and will start on boot.] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git is installed (RedHat).] *******************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git is installed (Debian).] *******************
==> drupaldev: changed: [localhost] => (item=git,git-svn)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git's dependencies are installed (RedHat).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git's dependencies are installed (Debian).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Download git.] ***************************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Expand git archive.] *********************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Check if git is installed.] **************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Build git.] ******************************************
==> drupaldev: skipping: [localhost] => (item=all)
==> drupaldev: skipping: [localhost] => (item=install)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Include OS-specific variables.] *******************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Define apache_packages.] **************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Ensure Apache is installed.] **********************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Update apt cache.] ********************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Ensure Apache is installed.] **********************
==> drupaldev: changed: [localhost] => (item=apache2,apache2-mpm-prefork,apache2-utils)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Get installed version of Apache.] *****************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Create apache_version variable.] ******************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | include_vars apache-22.yml] ***********************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | include_vars apache-24.yml] ***********************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Configure Apache.] ********************************
==> drupaldev: skipping: [localhost] => (item={'regexp': '^Listen ', 'line': u'Listen 80'})
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Add apache vhosts configuration.] *****************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Configure Apache.] ********************************
==> drupaldev: ok: [localhost] => (item={'regexp': '^Listen ', 'line': u'Listen 80'})
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Enable Apache mods.] ******************************
==> drupaldev: changed: [localhost] => (item=rewrite.load)
==> drupaldev: changed: [localhost] => (item=ssl.load)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Add apache vhosts configuration.] ***************
==> drupaldev: **
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Add vhost symlink in sites-enabled.] **************
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.apache | Ensure Apache is started and enabled on boot.] ****
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Include OS-specific variables.] ********************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Define mysql_packages.] ****************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Update postfix to the latest version (if extra repositories enabled).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Ensure MySQL packages are installed.] **************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Check if MySQL is already installed.] **************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Update apt cache if MySQL is not yet installed.] ***
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Ensure MySQL packages are installed.] **************
==> drupaldev: changed: [localhost] => (item=mysql-common,mysql-server,python-mysqldb)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Ensure MySQL is stopped after initial install.] ****
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Delete innodb log files created by apt package after initial install.] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Copy my.cnf global MySQL configuration.] ***********
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Create slow query log file (if configured).] *******
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Set ownership on slow query log file (if configured).] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Ensure MySQL is started and enabled on boot.] ******
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Get list of hosts for the root user.] **************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Update MySQL root password for localhost root account.] ***
==> drupaldev: changed: [localhost] => (item=drupalvm)
==> drupaldev: changed: [localhost] => (item=127.0.0.1)
==> drupaldev: changed: [localhost] => (item=::1)
==> drupaldev: changed: [localhost] => (item=localhost)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Copy .my.cnf file with root password credentials.] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Get list of hosts for the anonymous user.] *********
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Remove anonymous MySQL users.] *********************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Remove MySQL test database.] ***********************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Ensure MySQL databases are present.] ***************
==> drupaldev: changed: [localhost] => (item={'collation': 'utf8_general_ci', 'name': u'drupal', 'encoding': 'utf8'})
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Ensure MySQL users are present.] *******************
==> drupaldev: changed: [localhost] => (item={'host': '%', 'password': u'drupal', 'name': u'drupal', 'priv': u'drupal.*:ALL'})
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Ensure replication user exists on master.] *********
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Check slave replication status.] *******************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Check master replication status.] ******************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Configure replication on the slave.] ***************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.mysql | Start replication.] ********************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Include OS-specific variables.] **********************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Define php_packages.] ********************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Define php_webserver_daemon.] ************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Define php_conf_path.] *******************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Define php_extension_conf_path.] *********************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Ensure PHP packages are installed.] ******************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Update apt cache.] ***********************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Ensure PHP packages are installed.] ******************
==> drupaldev: changed: [localhost] => (i
==> drupaldev: tem=php5,libapache2-mod-php5,php5-mcrypt,php5-cli,php5-common,php5-curl,php5-dev,php5-fpm,php5-gd,php-pear,php-apc,libpcre3-dev)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Check the installed version of PHP.] *****************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Disable opcache if PHP version is < 5.5.] ************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Ensure configuration directories exist.] *************
==> drupaldev: ok: [localhost] => (item=/etc/php5/apache2)
==> drupaldev: ok: [localhost] => (item=/etc/php5/apache2/conf.d)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Place PHP configuration file in place.] **************
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Place APC configuration file in place.] **************
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Place OpCache configuration file in place.] **********
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Ensure php-fpm is started and enabled at boot (if configured).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Include OS-specific variables.] **********************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Define php_packages.] ********************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Define php_webserver_daemon.] ************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Define php_conf_path.] *******************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Define php_extension_conf_path.] *********************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Ensure PHP packages are installed.] ******************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Update apt cache.] ***********************************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Ensure PHP packages are installed.] ******************
==> drupaldev: ok: [localhost] => (item=php5,libapache2-mod-php5,php5-mcrypt,php5-cli,php5-common,php5-curl,php5-dev,php5-fpm,php5-gd,php-pear,php-apc,libpcre3-dev)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Check the installed version of PHP.] *****************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Disable opcache if PHP version is < 5.5.] ************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Ensure configuration directories exist.] *************
==> drupaldev: ok: [localhost] => (item=/etc/php5/apache2)
==> drupaldev: ok: [localhost] => (item=/etc/php5/apache2/conf.d)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Place PHP configuration file in place.] **************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Place APC configuration file in place.] **************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Place OpCache configuration file in place.] **********
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php | Ensure php-fpm is started and enabled at boot (if configured).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php-pecl | Install PECL libaries.] *************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php-mysql | Install PHP MySQL dependencies (RedHat).] ******
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.php-mysql | Install PHP MySQL dependencies (Debian).] ******
==> drupaldev: changed: [localhost] => (item=php5-mysql)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.composer | Ensure curl is installed (RedHat).] *************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.composer | Ensure curl is installed (Debian).] *************
==> drupaldev: ok: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.composer | Install Composer into the current directory.] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.composer | Move Composer into globally-accessible location.] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.composer | Update Composer to latest version (if configured).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git is installed (RedHat).] *******************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git is installed (Debian).] *******************
==> drupaldev: ok: [localhost] => (item=git,git-svn)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git's dependencies are installed (RedHat).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git's dependencies are installed (Debian).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Download git.] ***************************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Exp
@geerlingguy
Copy link
Owner

@danryu - Can you do a vagrant destroy -f to destroy the machine, and then vagrant up again? If it happens more than once after a few minutes/hours of difference between runs, it's probably a bug somewhere. However, I've seen this kind of thing happen from time to time if one of the web services used to install specific software is not running that well (e.g. GitHub having connection issues, one of the apt mirrors being down, that kind of thing).

@danryu
Copy link
Author

danryu commented May 19, 2015

I destroyed the vm and am doing another "up" right now ... and it has hung at the same point (about 10 minutes so far) ...

==> drupaldev: TASK: [geerlingguy.composer | Move Composer into globally-accessible location.] ***
==> drupaldev: changed: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.composer | Update Composer to latest version (if configured).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git is installed (RedHat).] *******************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git is installed (Debian).] *******************
==> drupaldev: ok: [localhost] => (item=git,git-svn)
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git's dependencies are installed (RedHat).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Ensure git's dependencies are installed (Debian).] ***
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Download git.] ***************************************
==> drupaldev: skipping: [localhost]
==> drupaldev:
==> drupaldev: TASK: [geerlingguy.git | Exp

Strange that the output actually cuts at the same point as before ...
I'm also confused that the "git" role is running for a second time ... is this duplication intentional?

Either way, I'm stumped ... and also blocked from using this vm, which I was hoping to build into another project right now ...

@danryu
Copy link
Author

danryu commented May 19, 2015

Even though the output has stopped, it seems that the vm is (partially) running ...
I opened another terminal to do a "vagrant ssh", and these are the last few lines of "ps auxww"

root     20057  0.0  0.0   4448   788 ?        S    08:57   0:00 /bin/sh -c LANG=C LC_CTYPE=C /usr/bin/python /root/.ansible/tmp/ansible-tmp-1432025879.67-104906993129467/command; rm -rf /root/.ansible/tmp/ansible-tmp-1432025879.67-104906993129467/ >/dev/null 2>&1
root     20058  0.0  1.0  34644 10912 ?        S    08:57   0:00 /usr/bin/python /root/.ansible/tmp/ansible-tmp-1432025879.67-104906993129467/command
root     20059  0.0  0.0   4448   760 ?        S    08:57   0:00 /bin/sh -c /usr/local/bin/composer install --prefer-source --no-interaction
root     20060  0.0  3.0 282884 30700 ?        S    08:57   0:01 php /usr/local/bin/composer install --prefer-source --no-interaction
root     20096  0.0  0.0      0     0 ?        S    09:02   0:00 [kworker/u4:0]
root     20301  0.0  0.6 103564  6516 ?        Ss   09:31   0:00 sshd: vagrant [priv]
vagrant  20319  0.5  0.4 103564  5048 ?        R    09:31   0:00 sshd: vagrant@pts/2
vagrant  20320  0.1  0.5  22536  5272 pts/2    Ss   09:31   0:00 -bash
root     20382  0.0  0.0   4448   860 ?        S    09:32   0:00 sh -c git clone --no-checkout 'git://github.com/sebastianbergmann/recursion-context.git' '/usr/local/share/drush/vendor/sebastian/recursion-context' && cd '/usr/local/share/drush/vendor/sebastian/recursion-context' && git remote add composer 'git://github.com/sebastianbergmann/recursion-context.git' && git fetch composer
root     20383  0.2  0.3  19156  3520 ?        S    09:32   0:00 git clone --no-checkout git://github.com/sebastianbergmann/recursion-context.git /usr/local/share/drush/vendor/sebastian/recursion-context

Then I tried a

$ git clone --no-checkout git://github.com/sebastianbergmann/recursion-context.git
Cloning into 'recursion-context'...
fatal: unable to connect to github.com:
github.com[0: 192.30.252.131]: errno=Connection timed out

in another terminal - so indeed there is a connectivity problem. (You should be able to reproduce this now, I believe!) If I clone that repo with the https protocol, it works fine, and other github repos work fine with git/ssh - so I don't know what the issue with recursion-context.git is exactly ...

Anyway - I'd like to resolve this connectivity/ssh-vs-https issue, and the git role replication issue - I'm trying to build a slimmed-down version (ie no mysql/java/pimpmylog...) of drupal-vm in a Docker image - so any advice about how to achieve this would be gratefully received.
Thanks - great project btw!

@geerlingguy
Copy link
Owner

@danryu - I'm able to clone that repository without issue from a few different network/geo locations. It seem you might have a local connectivity issue; a proxy, a firewall, ISP filtering, something like that.

Can you try again today to see if it might've been a momentary problem?

As far as moving Drupal VM to a Docker image, I'm planning on working on containerizing everything in version 2.0; but I'm going to wait a little longer so the rest of the VM can stabilize more before going down that route.

@danryu
Copy link
Author

danryu commented May 20, 2015

Thanks for the response.
(Re: Docker ... I'm quite happy rolling ansible playbooks into Docker images as it is, I was actually more interested in debugging this particular issue ... which in turn would help me along!)

It seems the problem was with using the native git url (git://github.com/sebastianbergmann/recursion-context.git) rather than the ssh option (git@github.com:sebastianbergmann/recursion-context.git). Which resolves the connectivity issue :)
However, I'm not sure where that url is actually referenced ... I see that it happens during your ansible-role-drush main task, which involves cloning drush.git from github ... and within that repo are hundreds of references to various other repos - but none of which I can see are referenced via the git:// url style! So I'm still at a bit of a loss to debug this ...

I've tried looking at alternative ways to install current stable Drush (ie v7 or recent v6.x) using Composer and other means ... but keep on running into this classic problem:

Could not fetch https://api.github.com/repos/RobLoach/Console_Table/zipball/10d89fbbe533351dcfe5dc1e84de25d9a8395950, please create a GitHub OAuth token to go over the API rate limit
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+drupalvm+2015-05-20+1137
to retrieve a token. It will be stored in "/home/vagrant/.composer/auth.json" for future use by Composer.
Token (hidden):

which I'm guessing might be the reason you chose to install Drush as you did in your Drush ansible role?
It's just that installing Drush from github repo/source seems like a heavy hammer which in turn is leading to this git:// url slowdown....

@JorisVanEijden
Copy link
Contributor

@danryu I started seeing the same "hanging" behaviour that you describe after installing the vagrant-winnfsd plugin.
Uninstalling it again resolved the issue for me.
In the plugin's issue list there are more reports of extremely slow performance so it does not appear to have anything to do with the drupalvm.

Ironically I found that plugin after being intrigued by the NFS entries in your logfile in this issue 😄

@geerlingguy
Copy link
Owner

@danryu - Thanks for the additional information, it really helps! That particular git command is run as part of the process of installing composer, so it's completely outside the control of my playbooks, and if anything, would be a bug against composer's own install process.

This should've been fixed by composer/composer#3542, which references the PR with a fix: composer/composer#3651

It may also be related to your use of the vagrant-winnfsd plugin (if it's installed, so good catch by @JorisVanEijden as well). I think, if you find that you can fix things by uninstalling that plugin or changing something else in your environment, we could document the fix in the wiki page for Windows Notes.

@danryu
Copy link
Author

danryu commented May 20, 2015

No, @JorisVanEijden, unfortunately that's not it :( ....
(I tried uninstalling winnfsd plugin just to test, but indeed the hang still occurs at the same place ... again "vagrant ssh" and "ps auxww" shows during the Drush build, many many repos are being accessed via the "git://github.com/XXXX" style of native url ... )

The MAIN problem is that most commonly on corporate networks, the git daemon port (9148) is blocked. (Please read the last paragraph of https://git-scm.com/book/ch4-1.html for the background here.)

As it happens, @geerlingguy 's ansible-role-drush does EVENTUALLY complete, but for each repo referenced in the drush repo (eg git://github.com/sebastianbergmann/recursion-context.git), it only times out after perhaps 10-15 minutes PER REPO before defaulting to the "https://github.com/XXX" style url .... which means that after a dozen or so repos, a few hours has passed before drush is even installed!

I'm now looking at replacing the ansible-role-drush with a more simple playbook based on the install docs at docs.drush.org/en/master/install/ ...

@danryu
Copy link
Author

danryu commented May 20, 2015

Thanks, @geerlingguy, I've just noticed your last comment, had my comment open for ages while I was debugging :)

Yes, I see your drush ansible role is fairly "vanilla" and thus shouldn't be adding to the problem ... perhaps it's ansible itself which causes the much longer timeouts ... still unsure at this point ...

@geerlingguy
Copy link
Owner

@danryu - Please keep digging if you can—it's possible I can make the drush and/or composer roles more flexible to allow you to specify different git URLs, different install methods, etc.

But one thing I've so far been pretty inflexible on (and will likely continue to be) is modifying things just so they work behind corporate proxies/firewalls. Since every corporation is different—and nearly all do things that would make roles nightmarishly complex, I vote to use standard methods (like using git URLs by default, for speed, efficiency, and sanity) over making everything work through ports 80 and 443 ;)

I'd much rather we push for corporations to do the right thing and open up git access... since about 99% of the modern OSS development world uses git at this point.

@danryu
Copy link
Author

danryu commented May 20, 2015

@geerlingguy - yes I agree on going standard where possible. As it happens, though, the https:// and git@github.com (ie ssh) are the standard methods - even github themselves make these the two easily referenced methods on each and every repo page ...
This makes sense as ports 22/80/443 are in general accessible from even locked-down networks ...

Who knows why composer installs default to git:// style urls to start with ... !!

@geerlingguy
Copy link
Owner

@danryu - true, true... and you may want to file an issue in the composer project to ask them to use the https git URLs for install, specifically to make install work behind restrictive firewalls.

@danryu
Copy link
Author

danryu commented May 21, 2015

@geerlingguy - so after a little further digging, it seems that this has reared its head with others in the past. This stackoverflow shows a couple of solutions that have been implemented:
http://stackoverflow.com/questions/18638395/how-to-force-composer-to-use-https-instead-of-git
The first of which is to tell composer to use https rather than native git:

composer config --global github-protocols https

But perhaps the more useful is to tell the git client itself to change all git:// addresses to https:// addresses:

git config --global url."https://".insteadOf "git://"

This seems to be more sensible, as it covers all the potential problematic use case scenarios.
I tried forking your -git and -drush ansible roles just to easily substitute them in my modified playbook (just to add that extra config to the git role, and to tell your drush playbook to depend on my forked git role rather than yours) and they seem to work fine. No more hour-long hangs!

(I still can't quite understand how using your -drush role ends up cloning what must be about 30-40 github repos, compared to the handful that seem to happen when I do the procedure at docs.drush.org/en/master/install/ - but hey it works and I've really spent way too long on this already)

@geerlingguy
Copy link
Owner

@danryu - Thanks SO MUCH for all your debugging work. I think it might be safe to at least set the composer config differently for it's own installation. That would probably also fix the drush installation process, since almost all the activity in the drush installation goes through composer/github pulls!

Do you think you could open a ticket in the https://github.com/geerlingguy/ansible-role-composer repository to ask for this config change, with the reasoning from this ticket?

@danryu
Copy link
Author

danryu commented May 22, 2015

@geerlingguy - No worries, I hope this will prove useful.
If you don't mind, I'm gonna make the ticket request in your git role, because that's where the root of the problem is, and a single config addition there will cascade to any other native git:// references from all other playbooks. Surely the cleaner option? (No changes to the composer role needed. Also, it doesn't just affect github repos, but all git repos which would otherwise be blocked!)

Just to be clear, all existing references to addresses of type

  • https:// - port 443
  • git+ssh - port 22 (ie git@github.com:someuser/somerepo)
    will be unaffected - it is purely those that look like
  • git://github.com/someuser/somerepo.git (native git, port 9148)
    that will be modified to refer to the equivalent https:// address.
    I'm pretty sure this is a harmless change to your git role, and I have found it work well in my forked role for testing.

@dwaghmare
Copy link

it lags after

TASK: [Update apt cache if needed.] *******************************************
ok: [drupalvm]

TASK: [Get software for Python-based control.] ********************************

@geerlingguy
Copy link
Owner

@dwaghmare - Did running an Ansible role requirements installation with --force (as you mentioned here: 45b6944#commitcomment-13083376) fix this for you?

@kadiiskiFFW
Copy link

I'm stuck on almost the same place after "Ansible role requirements installation with --force" :(

TASK [geerlingguy.solr : Set solr_filename for Solr 4.x.] **********************
ok: [drupalvm]

TASK [geerlingguy.solr : Set solr_filename for Solr 3.x.] **********************
skipping: [drupalvm]

TASK [geerlingguy.solr : Download Solr.] ***************************************

staing on the last line for like un hour... And that's the second time I'm trying.
If somebody has solution please share. :)

@kadiiskiFFW
Copy link

After 2 destroys and lots of reading, the 3-rd one happened to succeed.
NOTE: I waited about an hour only for the "TASK [geerlingguy.solr : Download Solr.]" to finnish, so it's not stuck it's doing something.. 💃

@geerlingguy
Copy link
Owner

@kadiiskiFFW - Yeah, depending on your geographical location, the Solr download can take a really long time—but you can override for a faster download by finding a mirror closer to your location—see https://github.com/geerlingguy/ansible-role-solr, specifically the documentation under solr_mirror.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

5 participants