diigo.to.shak.blogspot.dailiy. 03/31/2024

    • Follow these steps to set up a Remote Desktop Protocol (RDP) connection from your local machine to an   Amazon Linux 2 instance running the MATE desktop environment.
    • Reconnect to the instance and run the following command on your Linux instance   to set the password for ec2-user.
    • First, start the xrdp service. You should be able to connect an RDP client to the host on the default RDP port (3389). If successful, you will be greeted with the xrdp session manager window which allows you to choose between Xorg or Xvnc sessions and provides inputs for user authentication. The session manager UI can be highly customized by modifying /etc/xrdp/xrdp.ini

      The parameters used to start Xorg and Xvnc display servers can be configured in /etc/xrdp/sesman.ini

      After successfully starting a display server, xrdp will execute /etc/xrdp/startwm.sh by default. This script is meant to start a window manager (similar to .xinitrc) and will read from ~/.xinitrc or /etc/X11/xinit/xinitrc if they exist. It is recommended to edit ~/.xinitrc to start your desktop environment or window manager, but you can also edit /etc/xrdp/startwm.sh

      If you just close the session window and RDP connection, you can access the same session again next time you connect with RDP. When you exit the window manager or desktop environment from the session window, the session will close and a new session will be opened the next time.

    • The required_providers block must be nested inside the top-level terraform block (which can also contain other settings).
    • Each module should at least declare the minimum provider version it is known to work with, using the >= version constraint syntax:
    • If you created a password for your user account when you created your VM, skip this step. If you only use SSH key authentication and don't have a local account password set, specify a password before you use xrdp to log in to your VM. xrdp can't accept SSH keys for authentication. The following example specifies a password for the user account azureuser:
    • Specifying a password does not update your SSHD configuration to permit password logins if it currently does not. From a security perspective, you may wish to connect to your VM with an SSH tunnel using key-based authentication and then connect to xrdp.

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/29/2024

    • In this example, I have used the AWS S3 bucket as the remote backend.
    • When we look at the contents of the Terraform state S3 bucket, apart from our default terraform.tfstate file, we can see that a new directory named “env:/” is created, within which another directory with the name of our workspace (test_workspace) is created. A new terraform.tfstate file is maintained at this location.
    • Looking closely, the size of the default state file is considerably larger than that of the custom workspace-specific state file. This shows that the new state file is created, but it does not hold any information from the default state file. This is how Terraform creates an isolated environment and maintains its state file differently.

       

      The contents of the test_workspace state file before running terraform apply are shown below:

      • When you practice infrastructure-as-code (IaC), e.g., using terraform, there are 3 types of “infrastructure state”

        • infrastructure state described by the terraform DSL (Domain Specific-Language) configuration files”: This is the outcome of a devops codifying the infrastructure in a bunch of files
        • actual infrastructure state”: This is the actual infrastructure, which is the result of using terraform to deploy the infrastructure codified in the “terraform DSL configuration files” from the previous step
        • terraform state file”: This an artifact generated by the terraform deployment. It holds information that is otherwise not available anywhere else; it maps the infrastructure components codified in the “terraform DSL configuration files” to the actual manifested infrastructure components. This is usually stored in central store, e.g., AWS S3, etc., accessible to all terraform users so that everyone sees the same state, and it can be locked to prevent simultaneous changes, to avoid state corruption.
    • Comparing ‘terraform plan/apply -refresh-only (refresh)’, ‘terraform plan’, ‘terraform apply’ and their impact
    • ~>: Allows only the rightmost version component to increment. For example, to allow new patch releases within a specific minor release, use the full version number: ~> 1.0.4 will allow installation of 1.0.5 and 1.0.10 but not 1.1.0

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/27/2024

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/26/2024

    • Note that even when TF_LOG_PATH is set, TF_LOG must be set in order for any logging to be enabled.
      • For all terraform commands that involves states, e.g., plan, apply, refresh (deprecated and is now '-refresh-only'), it is useful to think about it in terms of 2 things:

         
           
        • The authoritative state
        •  
        • The states being compared Note that the 'authoritative state' is NEVER changed as a result of the command.
        •  
         

        There are 3 types of 'state' (loosely):

         
           
        • Actual state of your infra (actual-state)
        •  
        • terraform state file (tf-state-file)
        •  
        • State described by terraform code config (tf-dsl-config)
        •  
         

        When you do terraform plan/apply WITH -refresh-only:

         
           
        • The authoritative state is 'actual-state'
        •  
        • The states being compared in 'terraform plan -refresh-only' is 'actual-state' vs. 'tf-state-file'
        •  
        • The outcome of 'terraform apply -refresh-only' is 'tf-state-file' is synced to become 'actual-state'
        •  
         

        When you do terraform plan/apply WITHOUT -refresh-only:

         
           
        • The authoritative state is 'tf-dsl-config'
        •  
        • The states being compared in 'terraform plan' is 'tf-dsl-config' vs. 'actual-state'
        •  
        • The outcome of 'terraform apply' is 'actual-state' is synced to become 'tf-dsl-config'
        •  
         

        For more details of what authoritative states are, and what states are being compared for various terraform commands see:

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/25/2024

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/23/2024

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/22/2024

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/20/2024

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/12/2024

    • Ansible, Chef and Puppet are configuration management tools which means they are primarily designed to install and manage software on existing server
    • In Terraform there are certain providers that are either "Hashicorp Maintained" (AWS, Azure etc.) or "Non-Hashicorp Maintained". Below is best practice syntax for establishing providers in your Terraform, notice how there are two blocks, one for what providers are required and another for each provider specific config.
    • Terraform Variables Basics
    • Local Values
      Local values assign a name to an expression, allowing it to be used multiple times within a module without repeating it.
    • Load Order and File Structure
    • Dynamic Blocks
    • Notice how we define the iterator as port now instead of being ingress.value it is port.value. This can make dynamic blocks easier to read and understand.
    • What if you want multiple different dynamic values in one dynamic block?
    • Variables and Terraform Modules
    • Terraform Remote Backend
    • With one shared state file every time an apply is done the state file is locked so two apply processes can not be run at the same time.
      Using a remote backend for state files is the recommended process for collaborative environments. Nearly all businesses using Terraform use remote backend for state files. 
    • Setting up Easy DKIM  for a verified domain identity
      • The message must have a valid DKIM signature and passes the DKIM check.

         
      •  

        The domain specified in the DKIM signature must align (match) with the domain  in the From address.     If the domain's DMARC policy specifies strict alignment for DKIM, these domains  must match exactly (SES uses a strict DKIM policy by default).

    • Complying with DMARC through  DKIM

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/08/2024

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/07/2024

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/06/2024

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/04/2024

    • headers = {  'Content-Type': 'application/json',  'Authorization': 'Bearer your_token' }
    • params = {  'param1': 'value1',  'param2': 'value2' }
    • The final URL that the request is made to would look something like this:  http://example.com/api/items?param1=value1&param2=value2
    • How to Install and Switch Python Versions on Ubuntu 22.04
    • Step 1. Install Python 3.10
    • sudo apt install python3.10 -y
    • Python 3.10.6
    • We need to create symbolic links for every installed Python version, including the path of the installed Python version. Execute the following commands one by one:
    • sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2
    • You can enter any number and use that Python version. For example, we choose the Python3.10 by entering the number 1
    • Adding a data source to your Terraform configurations does not create anything new; it’s just a way to query the provider’s APIs for data and to make that data available to the rest of your Terraform code. Each Terraform provider exposes a variety of data sources. For example, the AWS Provider includes data sources to look up VPC data, subnet data, AMI IDs, IP address ranges, the current user’s identity, and much more.
    • With the aws_vpc data source, the only filter you need is default = true
    • data.aws_vpc.default.id

Posted from Diigo. The rest of my favorite links are here.

diigo.to.shak.blogspot.dailiy. 03/01/2024

Posted from Diigo. The rest of my favorite links are here.