agardnerit / ansible-playbook-awx Goto Github PK
View Code? Open in Web Editor NEWPlaybook to install AWX on Amazon AMIs
Playbook to install AWX on Amazon AMIs
Hello Adam,
i am not able to install awx in centos 7
I am getting below errors.
Can you please help
TASK [Install AWX] *************************************************************
task path: /root/awx.yml:27
fatal: [localhost]: FAILED! => {"changed": true, "cmd": ["/bin/ansible-playbook", "-i", "/tmp/ansible/installer/inventory", "/tmp/ansible/installer/install.yml"], "delta": "0:00:15.061719", "end": "2019-11-11 15:26:23.968861", "msg": "non-zero return code", "rc": 2, "start": "2019-11-11 15:26:08.907142", "stderr": "[DEPRECATION WARNING]: The 'docker_service' module has been renamed to \n'docker_compose'.. This feature will be removed in version 2.12. Deprecation \nwarnings can be disabled by setting deprecation_warnings=False in ansible.cfg.", "stderr_lines": ["[DEPRECATION WARNING]: The 'docker_service' module has been renamed to ", "'docker_compose'.. This feature will be removed in version 2.12. Deprecation ", "warnings can be disabled by setting deprecation_warnings=False in ansible.cfg."], "stdout": "\nPLAY [Build and deploy AWX] ****************************************************\n\nTASK [Gathering Facts] *********************************************************\nok: [localhost]\n\nTASK [check_vars : include_tasks] **********************************************\nskipping: [localhost]\n\nTASK [check_vars : include_tasks] **********************************************\nincluded: /tmp/ansible/installer/roles/check_vars/tasks/check_docker.yml for localhost\n\nTASK [check_vars : postgres_data_dir should be defined] ************************\nok: [localhost] => {\n \"changed\": false, \n \"msg\": \"All assertions passed\"\n}\n\nTASK [check_vars : host_port should be defined] ********************************\nok: [localhost] => {\n \"changed\": false, \n \"msg\": \"All assertions passed\"\n}\n\nTASK [image_build : Set global version if not provided] ************************\nskipping: [localhost]\n\nTASK [image_build : Verify awx-logos directory exists for official install] ****\nskipping: [localhost]\n\nTASK [image_build : Copy logos for inclusion in sdist] *************************\nskipping: [localhost]\n\nTASK [image_build : Set sdist file name] ***************************************\nskipping: [localhost]\n\nTASK [image_build : AWX Distribution] ******************************************\nskipping: [localhost]\n\nTASK [image_build : Stat distribution file] ************************************\nskipping: [localhost]\n\nTASK [image_build : Clean distribution] ****************************************\nskipping: [localhost]\n\nTASK [image_build : Build sdist builder image] *********************************\nskipping: [localhost]\n\nTASK [image_build : Build AWX distribution using container] ********************\nskipping: [localhost]\n\nTASK [image_build : Build AWX distribution locally] ****************************\nskipping: [localhost]\n\nTASK [image_build : Set docker build base path] ********************************\nskipping: [localhost]\n\nTASK [image_build : Set awx_web image name] ************************************\nskipping: [localhost]\n\nTASK [image_build : Set awx_task image name] ***********************************\nskipping: [localhost]\n\nTASK [image_build : Ensure directory exists] ***********************************\nskipping: [localhost]\n\nTASK [image_build : Stage sdist] ***********************************************\nskipping: [localhost]\n\nTASK [image_build : Template web Dockerfile] ***********************************\nskipping: [localhost]\n\nTASK [image_build : Template task Dockerfile] **********************************\nskipping: [localhost]\n\nTASK [image_build : Stage launch_awx] ******************************************\nskipping: [localhost]\n\nTASK [image_build : Stage launch_awx_task] *************************************\nskipping: [localhost]\n\nTASK [image_build : Stage google-cloud-sdk.repo] *******************************\nskipping: [localhost]\n\nTASK [image_build : Stage supervisor.conf] *************************************\nskipping: [localhost]\n\nTASK [image_build : Stage supervisor_task.conf] ********************************\nskipping: [localhost]\n\nTASK [image_build : Stage settings.py] *****************************************\nskipping: [localhost]\n\nTASK [image_build : Stage requirements] ****************************************\nskipping: [localhost]\n\nTASK [image_build : Stage config watcher] **************************************\nskipping: [localhost]\n\nTASK [image_build : Stage Makefile] ********************************************\nskipping: [localhost]\n\nTASK [image_build : Build base web image] **************************************\nskipping: [localhost]\n\nTASK [image_build : Build base task image] *************************************\nskipping: [localhost]\n\nTASK [image_build : Tag task and web images as latest] *************************\nskipping: [localhost]\n\nTASK [image_build : Clean docker base directory] *******************************\nskipping: [localhost]\n\nTASK [image_push : Authenticate with Docker registry if registry password given] ***\nskipping: [localhost]\n\nTASK [image_push : Remove web image] *******************************************\nskipping: [localhost]\n\nTASK [image_push : Remove task image] ******************************************\nskipping: [localhost]\n\nTASK [image_push : Tag and push web image to registry] *************************\nskipping: [localhost]\n\nTASK [image_push : Tag and push task image to registry] ************************\nskipping: [localhost]\n\nTASK [image_push : Set full image path for Registry] ***************************\nskipping: [localhost]\n\nTASK [kubernetes : fail] *******************************************************\nskipping: [localhost]\n\nTASK [kubernetes : include_tasks] **********************************************\nskipping: [localhost] => (item=openshift_auth.yml) \nskipping: [localhost] => (item=openshift.yml) \n\nTASK [kubernetes : include_tasks] **********************************************\nskipping: [localhost] => (item=kubernetes_auth.yml) \nskipping: [localhost] => (item=kubernetes.yml) \n\nTASK [kubernetes : Use kubectl or oc] ******************************************\nskipping: [localhost]\n\nTASK [kubernetes : set_fact] ***************************************************\nskipping: [localhost]\n\nTASK [kubernetes : Record deployment size] *************************************\nskipping: [localhost]\n\nTASK [kubernetes : Set expected post-deployment Replicas value] ****************\nskipping: [localhost]\n\nTASK [kubernetes : Delete existing Deployment] *********************************\nskipping: [localhost]\n\nTASK [kubernetes : Get Postgres Service Detail] ********************************\nskipping: [localhost]\n\nTASK [kubernetes : Template PostgreSQL Deployment (OpenShift)] *****************\nskipping: [localhost]\n\nTASK [kubernetes : Deploy and Activate Postgres (OpenShift)] *******************\nskipping: [localhost]\n\nTASK [kubernetes : Template PostgreSQL Deployment (Kubernetes)] ****************\nskipping: [localhost]\n\nTASK [kubernetes : Deploy and Activate Postgres (Kubernetes)] ******************\nskipping: [localhost]\n\nTASK [kubernetes : Set postgresql hostname to helm package service (Kubernetes)] ***\nskipping: [localhost]\n\nTASK [kubernetes : Wait for Postgres to activate] ******************************\nskipping: [localhost]\n\nTASK [kubernetes : Check if Postgres 9.6 is being used] ************************\nskipping: [localhost]\n\nTASK [kubernetes : Set new pg image] *******************************************\nskipping: [localhost]\n\nTASK [kubernetes : Wait for change to take affect] *****************************\nskipping: [localhost]\n\nTASK [kubernetes : Set env var for pg upgrade] *********************************\nskipping: [localhost]\n\nTASK [kubernetes : Wait for change to take affect] *****************************\nskipping: [localhost]\n\nTASK [kubernetes : Set env var for new pg version] *****************************\nskipping: [localhost]\n\nTASK [kubernetes : Wait for Postgres to redeploy] ******************************\nskipping: [localhost]\n\nTASK [kubernetes : Wait for Postgres to finish upgrading] **********************\nskipping: [localhost]\n\nTASK [kubernetes : Unset upgrade env var] **************************************\nskipping: [localhost]\n\nTASK [kubernetes : Wait for Postgres to redeploy] ******************************\nskipping: [localhost]\n\nTASK [kubernetes : Set task image name] ****************************************\nskipping: [localhost]\n\nTASK [kubernetes : Set web image name] *****************************************\nskipping: [localhost]\n\nTASK [kubernetes : Generate SSL certificates for RabbitMQ, if needed] **********\nskipping: [localhost]\n\nTASK [kubernetes : Render deployment templates] ********************************\nskipping: [localhost] => (item=None) \nskipping: [localhost] => (item=None) \nskipping: [localhost] => (item=None) \nskipping: [localhost]\n\nTASK [kubernetes : Apply Deployment] *******************************************\nskipping: [localhost]\n\nTASK [kubernetes : Delete any existing management pod] *************************\nskipping: [localhost]\n\nTASK [kubernetes : Template management pod] ************************************\nskipping: [localhost]\n\nTASK [kubernetes : Create management pod] **************************************\nskipping: [localhost]\n\nTASK [kubernetes : Wait for management pod to start] ***************************\nskipping: [localhost]\n\nTASK [kubernetes : Migrate database] *******************************************\nskipping: [localhost]\n\nTASK [kubernetes : Check for Tower Super users] ********************************\nskipping: [localhost]\n\nTASK [kubernetes : create django super user if it does not exist] **************\nskipping: [localhost]\n\nTASK [kubernetes : update django super user password] **************************\nskipping: [localhost]\n\nTASK [kubernetes : Create the default organization if it is needed.] ***********\nskipping: [localhost]\n\nTASK [kubernetes : Delete management pod] **************************************\nskipping: [localhost]\n\nTASK [kubernetes : Scale up deployment] ****************************************\nskipping: [localhost]\n\nTASK [local_docker : Check for existing Postgres data] *************************\nok: [localhost]\n\nTASK [local_docker : Record Postgres version] **********************************\nskipping: [localhost]\n\nTASK [local_docker : Determine whether to upgrade postgres] ********************\nok: [localhost]\n\nTASK [local_docker : Set up new postgres paths pre-upgrade] ********************\nskipping: [localhost] => (item=~/.awx/pgdocker/10/data) \n\nTASK [local_docker : Stop AWX before upgrading postgres] ***********************\nskipping: [localhost]\n\nTASK [local_docker : Upgrade Postgres] *****************************************\nskipping: [localhost]\n\nTASK [local_docker : Copy old pg_hba.conf] *************************************\nskipping: [localhost]\n\nTASK [local_docker : Remove old data directory] ********************************\nok: [localhost]\n\nTASK [local_docker : Export Docker web image if it isnt local and there isnt a registry defined] ***\nskipping: [localhost]\n\nTASK [local_docker : Export Docker task image if it isnt local and there isnt a registry defined] ***\nskipping: [localhost]\n\nTASK [local_docker : Set docker base path] *************************************\nskipping: [localhost]\n\nTASK [local_docker : Ensure directory exists] **********************************\nskipping: [localhost]\n\nTASK [local_docker : Copy web image to docker execution] ***********************\nskipping: [localhost]\n\nTASK [local_docker : Copy task image to docker execution] **********************\nskipping: [localhost]\n\nTASK [local_docker : Load web image] *******************************************\nskipping: [localhost]\n\nTASK [local_docker : Load task image] ******************************************\nskipping: [localhost]\n\nTASK [local_docker : Set full image path for local install] ********************\nskipping: [localhost]\n\nTASK [local_docker : Set DockerHub Image Paths] ********************************\nok: [localhost]\n\nTASK [local_docker : Create ~/.awx/awxcompose directory] ***********************\nok: [localhost]\n\nTASK [local_docker : Create Docker Compose Configuration] **********************\nok: [localhost] => (item=environment.sh)\nok: [localhost] => (item=credentials.py)\nok: [localhost] => (item=docker-compose.yml)\nok: [localhost] => (item=nginx.conf)\n\nTASK [local_docker : Render SECRET_KEY file] ***********************************\nok: [localhost]\n\nTASK [local_docker : Start the containers] *************************************\nfatal: [localhost]: FAILED! => {\"changed\": false, \"msg\": \"Unable to load docker-compose. Try `pip install docker-compose`. Error: Traceback (most recent call last):\\n File \\\"/tmp/ansible_docker_service_payload_YyBac_/ansible_docker_service_payload.zip/ansible/modules/cloud/docker/_docker_service.py\\\", line 477, in <module>\\nImportError: No module named compose\\n\"}\n\nPLAY RECAP *********************************************************************\nlocalhost : ok=11 changed=0 unreachable=0 failed=1 skipped=92 rescued=0 ignored=0 ", "stdout_lines": ["", "PLAY [Build and deploy AWX] ****************************************************", "", "TASK [Gathering Facts] *********************************************************", "ok: [localhost]", "", "TASK [check_vars : include_tasks] **********************************************", "skipping: [localhost]", "", "TASK [check_vars : include_tasks] **********************************************", "included: /tmp/ansible/installer/roles/check_vars/tasks/check_docker.yml for localhost", "", "TASK [check_vars : postgres_data_dir should be defined] ************************", "ok: [localhost] => {", " \"changed\": false, ", " \"msg\": \"All assertions passed\"", "}", "", "TASK [check_vars : host_port should be defined] ********************************", "ok: [localhost] => {", " \"changed\": false, ", " \"msg\": \"All assertions passed\"", "}", "", "TASK [image_build : Set global version if not provided] ************************", "skipping: [localhost]", "", "TASK [image_build : Verify awx-logos directory exists for official install] ****", "skipping: [localhost]", "", "TASK [image_build : Copy logos for inclusion in sdist] *************************", "skipping: [localhost]", "", "TASK [image_build : Set sdist file name] ***************************************", "skipping: [localhost]", "", "TASK [image_build : AWX Distribution] ******************************************", "skipping: [localhost]", "", "TASK [image_build : Stat distribution file] ************************************", "skipping: [localhost]", "", "TASK [image_build : Clean distribution] ****************************************", "skipping: [localhost]", "", "TASK [image_build : Build sdist builder image] *********************************", "skipping: [localhost]", "", "TASK [image_build : Build AWX distribution using container] ********************", "skipping: [localhost]", "", "TASK [image_build : Build AWX distribution locally] ****************************", "skipping: [localhost]", "", "TASK [image_build : Set docker build base path] ********************************", "skipping: [localhost]", "", "TASK [image_build : Set awx_web image name] ************************************", "skipping: [localhost]", "", "TASK [image_build : Set awx_task image name] ***********************************", "skipping: [localhost]", "", "TASK [image_build : Ensure directory exists] ***********************************", "skipping: [localhost]", "", "TASK [image_build : Stage sdist] ***********************************************", "skipping: [localhost]", "", "TASK [image_build : Template web Dockerfile] ***********************************", "skipping: [localhost]", "", "TASK [image_build : Template task Dockerfile] **********************************", "skipping: [localhost]", "", "TASK [image_build : Stage launch_awx] ******************************************", "skipping: [localhost]", "", "TASK [image_build : Stage launch_awx_task] *************************************", "skipping: [localhost]", "", "TASK [image_build : Stage google-cloud-sdk.repo] *******************************", "skipping: [localhost]", "", "TASK [image_build : Stage supervisor.conf] *************************************", "skipping: [localhost]", "", "TASK [image_build : Stage supervisor_task.conf] ********************************", "skipping: [localhost]", "", "TASK [image_build : Stage settings.py] *****************************************", "skipping: [localhost]", "", "TASK [image_build : Stage requirements] ****************************************", "skipping: [localhost]", "", "TASK [image_build : Stage config watcher] **************************************", "skipping: [localhost]", "", "TASK [image_build : Stage Makefile] ********************************************", "skipping: [localhost]", "", "TASK [image_build : Build base web image] **************************************", "skipping: [localhost]", "", "TASK [image_build : Build base task image] *************************************", "skipping: [localhost]", "", "TASK [image_build : Tag task and web images as latest] *************************", "skipping: [localhost]", "", "TASK [image_build : Clean docker base directory] *******************************", "skipping: [localhost]", "", "TASK [image_push : Authenticate with Docker registry if registry password given] ***", "skipping: [localhost]", "", "TASK [image_push : Remove web image] *******************************************", "skipping: [localhost]", "", "TASK [image_push : Remove task image] ******************************************", "skipping: [localhost]", "", "TASK [image_push : Tag and push web image to registry] *************************", "skipping: [localhost]", "", "TASK [image_push : Tag and push task image to registry] ************************", "skipping: [localhost]", "", "TASK [image_push : Set full image path for Registry] ***************************", "skipping: [localhost]", "", "TASK [kubernetes : fail] *******************************************************", "skipping: [localhost]", "", "TASK [kubernetes : include_tasks] **********************************************", "skipping: [localhost] => (item=openshift_auth.yml) ", "skipping: [localhost] => (item=openshift.yml) ", "", "TASK [kubernetes : include_tasks] **********************************************", "skipping: [localhost] => (item=kubernetes_auth.yml) ", "skipping: [localhost] => (item=kubernetes.yml) ", "", "TASK [kubernetes : Use kubectl or oc] ******************************************", "skipping: [localhost]", "", "TASK [kubernetes : set_fact] ***************************************************", "skipping: [localhost]", "", "TASK [kubernetes : Record deployment size] *************************************", "skipping: [localhost]", "", "TASK [kubernetes : Set expected post-deployment Replicas value] ****************", "skipping: [localhost]", "", "TASK [kubernetes : Delete existing Deployment] *********************************", "skipping: [localhost]", "", "TASK [kubernetes : Get Postgres Service Detail] ********************************", "skipping: [localhost]", "", "TASK [kubernetes : Template PostgreSQL Deployment (OpenShift)] *****************", "skipping: [localhost]", "", "TASK [kubernetes : Deploy and Activate Postgres (OpenShift)] *******************", "skipping: [localhost]", "", "TASK [kubernetes : Template PostgreSQL Deployment (Kubernetes)] ****************", "skipping: [localhost]", "", "TASK [kubernetes : Deploy and Activate Postgres (Kubernetes)] ******************", "skipping: [localhost]", "", "TASK [kubernetes : Set postgresql hostname to helm package service (Kubernetes)] ***", "skipping: [localhost]", "", "TASK [kubernetes : Wait for Postgres to activate] ******************************", "skipping: [localhost]", "", "TASK [kubernetes : Check if Postgres 9.6 is being used] ************************", "skipping: [localhost]", "", "TASK [kubernetes : Set new pg image] *******************************************", "skipping: [localhost]", "", "TASK [kubernetes : Wait for change to take affect] *****************************", "skipping: [localhost]", "", "TASK [kubernetes : Set env var for pg upgrade] *********************************", "skipping: [localhost]", "", "TASK [kubernetes : Wait for change to take affect] *****************************", "skipping: [localhost]", "", "TASK [kubernetes : Set env var for new pg version] *****************************", "skipping: [localhost]", "", "TASK [kubernetes : Wait for Postgres to redeploy] ******************************", "skipping: [localhost]", "", "TASK [kubernetes : Wait for Postgres to finish upgrading] **********************", "skipping: [localhost]", "", "TASK [kubernetes : Unset upgrade env var] **************************************", "skipping: [localhost]", "", "TASK [kubernetes : Wait for Postgres to redeploy] ******************************", "skipping: [localhost]", "", "TASK [kubernetes : Set task image name] ****************************************", "skipping: [localhost]", "", "TASK [kubernetes : Set web image name] *****************************************", "skipping: [localhost]", "", "TASK [kubernetes : Generate SSL certificates for RabbitMQ, if needed] **********", "skipping: [localhost]", "", "TASK [kubernetes : Render deployment templates] ********************************", "skipping: [localhost] => (item=None) ", "skipping: [localhost] => (item=None) ", "skipping: [localhost] => (item=None) ", "skipping: [localhost]", "", "TASK [kubernetes : Apply Deployment] *******************************************", "skipping: [localhost]", "", "TASK [kubernetes : Delete any existing management pod] *************************", "skipping: [localhost]", "", "TASK [kubernetes : Template management pod] ************************************", "skipping: [localhost]", "", "TASK [kubernetes : Create management pod] **************************************", "skipping: [localhost]", "", "TASK [kubernetes : Wait for management pod to start] ***************************", "skipping: [localhost]", "", "TASK [kubernetes : Migrate database] *******************************************", "skipping: [localhost]", "", "TASK [kubernetes : Check for Tower Super users] ********************************", "skipping: [localhost]", "", "TASK [kubernetes : create django super user if it does not exist] **************", "skipping: [localhost]", "", "TASK [kubernetes : update django super user password] **************************", "skipping: [localhost]", "", "TASK [kubernetes : Create the default organization if it is needed.] ***********", "skipping: [localhost]", "", "TASK [kubernetes : Delete management pod] **************************************", "skipping: [localhost]", "", "TASK [kubernetes : Scale up deployment] ****************************************", "skipping: [localhost]", "", "TASK [local_docker : Check for existing Postgres data] *************************", "ok: [localhost]", "", "TASK [local_docker : Record Postgres version] **********************************", "skipping: [localhost]", "", "TASK [local_docker : Determine whether to upgrade postgres] ********************", "ok: [localhost]", "", "TASK [local_docker : Set up new postgres paths pre-upgrade] ********************", "skipping: [localhost] => (item=~/.awx/pgdocker/10/data) ", "", "TASK [local_docker : Stop AWX before upgrading postgres] ***********************", "skipping: [localhost]", "", "TASK [local_docker : Upgrade Postgres] *****************************************", "skipping: [localhost]", "", "TASK [local_docker : Copy old pg_hba.conf] *************************************", "skipping: [localhost]", "", "TASK [local_docker : Remove old data directory] ********************************", "ok: [localhost]", "", "TASK [local_docker : Export Docker web image if it isnt local and there isnt a registry defined] ***", "skipping: [localhost]", "", "TASK [local_docker : Export Docker task image if it isnt local and there isnt a registry defined] ***", "skipping: [localhost]", "", "TASK [local_docker : Set docker base path] *************************************", "skipping: [localhost]", "", "TASK [local_docker : Ensure directory exists] **********************************", "skipping: [localhost]", "", "TASK [local_docker : Copy web image to docker execution] ***********************", "skipping: [localhost]", "", "TASK [local_docker : Copy task image to docker execution] **********************", "skipping: [localhost]", "", "TASK [local_docker : Load web image] *******************************************", "skipping: [localhost]", "", "TASK [local_docker : Load task image] ******************************************", "skipping: [localhost]", "", "TASK [local_docker : Set full image path for local install] ********************", "skipping: [localhost]", "", "TASK [local_docker : Set DockerHub Image Paths] ********************************", "ok: [localhost]", "", "TASK [local_docker : Create ~/.awx/awxcompose directory] ***********************", "ok: [localhost]", "", "TASK [local_docker : Create Docker Compose Configuration] **********************", "ok: [localhost] => (item=environment.sh)", "ok: [localhost] => (item=credentials.py)", "ok: [localhost] => (item=docker-compose.yml)", "ok: [localhost] => (item=nginx.conf)", "", "TASK [local_docker : Render SECRET_KEY file] ***********************************", "ok: [localhost]", "", "TASK [local_docker : Start the containers] *************************************", "fatal: [localhost]: FAILED! => {\"changed\": false, \"msg\": \"Unable to load docker-compose. Try `pip install docker-compose`. Error: Traceback (most recent call last):\\n File \\\"/tmp/ansible_docker_service_payload_YyBac_/ansible_docker_service_payload.zip/ansible/modules/cloud/docker/_docker_service.py\\\", line 477, in <module>\\nImportError: No module named compose\\n\"}", "", "PLAY RECAP *********************************************************************", "localhost : ok=11 changed=0 unreachable=0 failed=1 skipped=92 rescued=0 ignored=0 "]}
Thank you for writing this up as I spent a lot of time trying to get the galaxy role you mentioned working on Amazon Linux to no avail. I noticed, however, that at some point the AWX install playbook now requires python3. This causes a number of issues because you can't just switch the interpreter to python3 as it will break the yum module. Here is what I had to do to get this to work:
First I had to check and install Python3
- name: Check to see if python3 is already installed
command: "python3 --version"
ignore_errors: true
changed_when: false #read-only task
check_mode: no
register: python3_is_installed
- name: Install Python 3
yum:
name: python3
Then I had to update the following tasks:
- name: Install Ansible
pip:
name: ansible
state: latest
vars:
ansible_python_interpreter: /usr/bin/python3
#... Existing yum, git, service tasks remained the same ....
- name: Install Docker Compose
pip:
name: docker-compose==1.9.0
vars:
ansible_python_interpreter: /usr/bin/python3
- name: Install AWX
command: /usr/local/bin/ansible-playbook -i /tmp/ansible/installer/inventory /tmp/ansible/installer/install.yml
vars:
ansible_python_interpreter: /usr/bin/python3
Then it all worked like a charm.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.