--- - name: System Setup and Configuration hosts: all become: true tasks: - name: Set locale to C.UTF-8 command: localectl set-locale LANG=C.UTF-8 - name: Create APT configuration file to assume yes ansible.builtin.copy: dest: /etc/apt/apt.conf.d/90forceyes content: | APT::Get::Assume-Yes "true"; mode: '0644' - name: Append command to .bash_history ansible.builtin.blockinfile: path: "~/.bash_history" create: true block: | cd ~/node; bash rebuild.sh nano ~/node/projects/hello-world/container/config.json docker logs infernet-node -f docker logs --since 10m infernet-node -f marker: "" mode: '0644' - name: Append command to .bash_rc ansible.builtin.blockinfile: path: "~/.bashrc" create: true insertafter: EOF block: | cd /root/node marker: "" mode: '0644' - name: Update /etc/bash.bashrc ansible.builtin.blockinfile: path: /etc/bash.bashrc block: | export HISTTIMEFORMAT='%F, %T ' export HISTSIZE=10000 export HISTFILESIZE=10000 shopt -s histappend export PROMPT_COMMAND='history -a' export HISTCONTROL=ignoredups export LANG=C.UTF-8 export LC_ALL=C.UTF-8 alias ls='ls --color=auto' shopt -s cmdhist create: true marker: "" mode: '0644' - name: Update .inputrc for the current user ansible.builtin.blockinfile: path: "{{ ansible_env.HOME }}/.inputrc" block: | "\e[A": history-search-backward "\e[B": history-search-forward create: true marker: "" mode: '0644' - name: Update ~/.nanorc ansible.builtin.blockinfile: path: "{{ ansible_env.HOME }}/.nanorc" block: | set nohelp set tabsize 4 set tabstospaces set autoindent set positionlog set backup set backupdir /tmp/ set locking include /usr/share/nano/*.nanorc create: true marker: "" mode: '0644' - name: Set hostname ansible.builtin.hostname: name: "{{ serverid }}" - name: Ensure hostname is in /etc/hosts ansible.builtin.lineinfile: path: /etc/hosts regexp: '^127\.0\.1\.1\s+' line: "127.0.1.1 {{ serverid }}" state: present - name: Update and upgrade apt ansible.builtin.apt: update_cache: true upgrade: dist force_apt_get: true register: apt_update_result until: apt_update_result is success - name: Install necessary packages ansible.builtin.apt: name: - apt-transport-https - ca-certificates - curl - software-properties-common - make - iftop - python3 state: present - name: Install pip package web3 ansible.builtin.pip: name: web3 extra_args: --break-system-packages # - name: Install Docker # ansible.builtin.shell: curl -sL https://get.docker.com | sudo sh - # # - name: Update Docker daemon configuration for journald logging # ansible.builtin.copy: # dest: /etc/docker/daemon.json # content: | # { "log-driver": "journald" } # # - name: Restart Docker # ansible.builtin.service: # name: docker # state: restarted - name: Docker login ansible.builtin.shell: docker login -u {{ docker_username }} -p {{ docker_password }} # - name: Update journald log SystemMaxUse=2G configuration # ansible.builtin.lineinfile: # path: /etc/systemd/journald.conf # regexp: '^SystemMaxUse=' # line: 'SystemMaxUse=2G' # state: present # backup: yes # validate: 'journaldctl check-config %s' # # - name: Restart journald # ansible.builtin.service: # name: systemd-journald # state: restarted - name: Setup Foundry ansible.builtin.shell: | mkdir -p ~/foundry && cd ~/foundry curl -L https://foundry.paradigm.xyz | bash args: executable: /bin/bash - name: Run foundryup ansible.builtin.shell: | source ~/.bashrc && foundryup args: executable: /bin/bash - name: Clone repository ansible.builtin.git: repo: https://gitea.vvzvlad.xyz/vvzvlad/ritual.git dest: "{{ ansible_env.HOME }}/node" version: "{{ git_version }}" force: true async: "{{ 60 * 15 }}" poll: 30 - name: Update environment variables ansible.builtin.shell: | chmod +x ./update.sh ./update.sh ID "{{ serverid }}" ./update.sh GRIST_SERVER "{{ grist_server }}" ./update.sh GRIST_DOC_ID "{{ grist_doc_id }}" ./update.sh GRIST_API_KEY "{{ grist_api_key }}" ./update.sh WALLET_ADDRESS "{{ wallet }}" ./update.sh PRIVATE_KEY "{{ private_key }}" ./update.sh RPC_URL "{{ rpc_url }}" args: chdir: "{{ ansible_env.HOME }}/node" changed_when: false - name: Install grpcbalancer dependencies ansible.builtin.pip: name: - grist-api - flask - requests - waitress extra_args: --break-system-packages - name: Copy grpcbalancer files ansible.builtin.shell: | cp {{ ansible_env.HOME }}/node/grpcbalancer/grpc-balancer.py /usr/local/bin/ chmod 755 /usr/local/bin/grpc-balancer.py args: executable: /bin/bash - name: Install grpcbalancer service ansible.builtin.shell: | cp {{ ansible_env.HOME }}/node/grpcbalancer/grpc-balancer.service /etc/systemd/system/ chmod 644 /etc/systemd/system/grpc-balancer.service args: executable: /bin/bash - name: Start and enable grpcbalancer service ansible.builtin.systemd: name: grpc-balancer state: started enabled: yes daemon_reload: yes - name: Install Forge and Infernet SDK ansible.builtin.shell: | rm -rf {{ ansible_env.HOME }}/node/projects/hello-world/contracts/lib/forge-std rm -rf {{ ansible_env.HOME }}/node/projects/hello-world/contracts/lib/infernet-sdk cd {{ ansible_env.HOME }}/foundry && source {{ ansible_env.HOME }}/.bashrc && foundryup cd {{ ansible_env.HOME }}/node/projects/hello-world/contracts forge install --no-commit foundry-rs/forge-std forge install --no-commit ritual-net/infernet-sdk args: executable: /bin/bash - name: Deploy container ansible.builtin.shell: project=hello-world make deploy-container args: chdir: "{{ ansible_env.HOME }}/node" - name: Deploy contracts ansible.builtin.shell: project=hello-world make deploy-contracts 2>&1 register: contract_deploy_output args: chdir: "{{ ansible_env.HOME }}/node" retries: 5 delay: 120 failed_when: '"ONCHAIN EXECUTION COMPLETE & SUCCESSFUL" not in contract_deploy_output.stdout' - name: Update CallContract.s.sol with contract address ansible.builtin.shell: bash update_contracts.sh args: chdir: "{{ ansible_env.HOME }}/node" - name: Call contract ansible.builtin.shell: project=hello-world make call-contract 2>&1 register: contract_call_output args: chdir: "{{ ansible_env.HOME }}/node" retries: 5 delay: 120 failed_when: '"ONCHAIN EXECUTION COMPLETE & SUCCESSFUL" not in contract_call_output.stdout' # - name: Set Docker containers to restart unless stopped # ansible.builtin.shell: | # docker update --restart unless-stopped hello-world # docker update --restart unless-stopped infernet-node # docker update --restart unless-stopped deploy-redis-1 # docker update --restart unless-stopped infernet-anvil # docker update --restart unless-stopped deploy-fluentbit-1 - name: Copy checker service file ansible.builtin.copy: dest: /etc/systemd/system/node-checker.service content: | [Unit] Description=Node Checker Service After=network.target [Service] Type=simple User=root WorkingDirectory={{ ansible_env.HOME }}/node ExecStart=/usr/bin/python3 {{ ansible_env.HOME }}/node/checker.py Restart=always RestartSec=1800 [Install] WantedBy=multi-user.target mode: '0644' - name: Enable and start node-checker service ansible.builtin.systemd: name: node-checker enabled: yes state: started daemon_reload: yes - name: Remove docker login credentials ansible.builtin.shell: rm -rf /root/.docker/config.json